2026/01/24

Newest at the top

2026-01-24 02:22:38 +0100Pozyomka(~pyon@user/pyon) pyon
2026-01-24 02:22:11 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-01-24 02:19:42 +0100Pozyomka(~pyon@user/pyon) (Quit: WeeChat 4.8.1)
2026-01-24 02:16:14 +0100emmanuelux(~em@user/emmanuelux) emmanuelux
2026-01-24 02:11:34 +0100emmanuelux(~em@user/emmanuelux) (Remote host closed the connection)
2026-01-24 02:08:23 +0100ljdarj(~Thunderbi@user/ljdarj) (Quit: ljdarj)
2026-01-24 02:03:34 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
2026-01-24 02:03:22 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-01-24 01:50:54 +0100hakutaku(~textual@chen.yukari.eu.org) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2026-01-24 01:40:49 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 264 seconds)
2026-01-24 01:23:36 +0100 <Leary> chromoblob: The `LFP`/`GFP` section is written so as to highlight their strong duality; to better understand other aspects you can "simplify" the code by hand. Starting from `ListF` the rest is supposed to be readily understood as-written, but familiarity with the underlying concept of recursion schemes would certainly help.
2026-01-24 01:07:52 +0100tremon(~tremon@83.80.159.219) (Quit: getting boxed in)
2026-01-24 01:06:34 +0100Tuplanolla(~Tuplanoll@85-156-32-207.elisa-laajakaista.fi) (Ping timeout: 260 seconds)
2026-01-24 00:57:11 +0100machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) machinedgod
2026-01-24 00:51:21 +0100Zemy_(~Zemy@72.178.108.235) (Read error: Connection reset by peer)
2026-01-24 00:51:21 +0100Zemy(~Zemy@72.178.108.235)
2026-01-24 00:42:55 +0100Inline(~User@2001-4dd7-bc56-0-9df6-8597-3530-1076.ipv6dyn.netcologne.de) Inline
2026-01-24 00:31:43 +0100fp(~Thunderbi@89-27-10-140.bb.dnainternet.fi) (Ping timeout: 240 seconds)
2026-01-24 00:31:39 +0100timide_(~timide@user/timide) (Quit: WeeChat 4.7.2)
2026-01-24 00:30:59 +0100tydes(~tydes@user/ttydes) ttydes
2026-01-24 00:15:59 +0100mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es) mrmonday
2026-01-24 00:14:28 +0100mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es) (Quit: .)
2026-01-24 00:10:34 +0100Googulator(~Googulato@2a01-036d-0106-030a-3891-da7f-f3f3-f997.pool6.digikabel.hu) (Quit: Client closed)
2026-01-24 00:10:34 +0100Googulator63(~Googulato@2a01-036d-0106-030a-3891-da7f-f3f3-f997.pool6.digikabel.hu)
2026-01-24 00:08:14 +0100fp(~Thunderbi@89-27-10-140.bb.dnainternet.fi) fp
2026-01-24 00:05:49 +0100Gravifer(~Gravifer@user/Gravifer) (Ping timeout: 272 seconds)
2026-01-24 00:00:41 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2026-01-23 23:54:05 +0100fp(~Thunderbi@2001-14ba-6e24-3000--198.rev.dnainternet.fi) (Ping timeout: 245 seconds)
2026-01-23 23:49:43 +0100 <haskellbridge> <Liamzee> but i guess the real point is that there's no real advantage to let (@) = (,) in traverse (uncurry when) [ cond @ action...]
2026-01-23 23:48:19 +0100 <geekosaur> and macros can be typed (see typed TH, granting that TH is not very usable as macro systems go)
2026-01-23 23:47:54 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-01-23 23:47:51 +0100 <haskellbridge> <Liamzee> i love my traverse abuse, turning control flow into data is fun
2026-01-23 23:47:30 +0100 <geekosaur> functions aren't typed in scheme, amnd as monochrom says, there's no way to tell just from looking at code using it whether it's even a function
2026-01-23 23:47:04 +0100 <monochrom> (Sure, I can look up the docs. Now add the empirical fact that programmers don't write docs.)
2026-01-23 23:46:38 +0100 <haskellbridge> <Liamzee> the real question is whether hof zoo is a key advantage
2026-01-23 23:46:35 +0100 <monochrom> What I don't like about Lisp/Scheme macros is that if you write so much as "(f x)" then I have no idea what's its evaluation order because I can't remember whether f is a function or a macro.
2026-01-23 23:46:24 +0100 <haskellbridge> <Liamzee> i guess macros vs functions is more of a smaller difference, macros tend to be untyped, functions tend to be typed
2026-01-23 23:45:02 +0100 <monochrom> And like geekosaur said, there is also a symmetric difference.
2026-01-23 23:44:29 +0100 <monochrom> Conversely, Lisp doesn't have a good laziness story, so macro is better!
2026-01-23 23:43:55 +0100 <monochrom> Haskell does not have a good macro story, so lazy function is usually better in Haskell. (Try implementing "for" as a TH macro, then try using it.)
2026-01-23 23:43:09 +0100 <geekosaur> what I was getting at is that I consider them just different mechanisms. each may have advantages in some situations and disadvantages in others
2026-01-23 23:42:31 +0100 <haskellbridge> <Liamzee> well, runtime macros
2026-01-23 23:42:23 +0100Gravifer(~Gravifer@user/Gravifer) Gravifer
2026-01-23 23:42:15 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 265 seconds)
2026-01-23 23:42:15 +0100 <haskellbridge> <Liamzee> i mean any language with strong macros can define custom control structures
2026-01-23 23:42:03 +0100Gravifer(~Gravifer@user/Gravifer) (Client Quit)
2026-01-23 23:41:38 +0100 <geekosaur> Haskell's laziness lets you define some things that must be built-in control structures in other languages as functions. But the same can be said of Tcl and Ruby, in their own ways
2026-01-23 23:41:26 +0100 <haskellbridge> <Liamzee> well, i was wondering if for/for_ being functions in Haskell were advantages, HOF zoo has the issue that you'd actually need to know what the HOFs used are
2026-01-23 23:41:15 +0100Gravifer(~Gravifer@user/Gravifer) Gravifer
2026-01-23 23:40:48 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 252 seconds)