2026/05/15

Newest at the top

2026-05-15 05:50:33 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-05-15 05:45:41 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-15 05:43:15 +0000biberu(~biberu@user/biberu) biberu
2026-05-15 05:40:55 +0000 <jreicher> Makes sense. Reminds of a talk (which I can dig up) where the presenter showed what it look like to do a particular kind of code with and without delimited continuations. It was absolutely possible without, but much easier for a human with.
2026-05-15 05:37:55 +0000 <monochrom> Sure.
2026-05-15 05:34:57 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2026-05-15 05:27:39 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-15 05:25:57 +0000GdeVolpiano(~GdeVolpia@user/GdeVolpiano) GdeVolpiano
2026-05-15 05:25:23 +0000 <jreicher> monochrom: So you're saying we can understand a continuation as a message, and the function that accepts it as an object?
2026-05-15 05:23:40 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
2026-05-15 05:23:14 +0000random-jellyfish(~random-je@user/random-jellyfish) random-jellyfish
2026-05-15 05:21:24 +0000takuan(~takuan@d8D86B9E9.access.telenet.be)
2026-05-15 05:16:42 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-05-15 05:15:23 +0000tnt1(~Thunderbi@user/tnt1) tnt1
2026-05-15 05:14:26 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-05-15 05:11:51 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-15 05:11:26 +0000raym(~ray@user/raym) raym
2026-05-15 05:03:46 +0000Inline(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) Inline
2026-05-15 05:01:00 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-15 04:58:38 +0000michalz(~michalz@185.246.207.221)
2026-05-15 04:56:04 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-15 04:55:11 +0000 <monochrom> This holds for all algebraic effects. All of them could have been free monads implemented as algebraic data types. People use delimited continuations for speed only; it's just a code optimization. There is no mathematical difference apart from performance.
2026-05-15 04:49:29 +0000 <monochrom> An example of this equivalence is the exception effect. It can be implemented by "3" ways: bi-contiuation passing, stack frames, the Either monad which is an algebraic data type. But then bi-continuation passing is just church encoding of the Either ADT. And pushing stack frames containing function pointers is just passing continuations.
2026-05-15 04:45:08 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-05-15 04:40:17 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-15 04:37:48 +0000 <monochrom> (unless you really insist that "dispatch" must involve function pointers, like average OO people do; then I can compromise with: case-of is defunctionalized dispatch.)
2026-05-15 04:35:50 +0000 <monochrom> The data from defunctionalization are of an algebraic data type. The receiver does a case-of and reacts to different cases differently. That's just another way to say "dispatch".
2026-05-15 04:31:29 +0000 <monochrom> And then you just have to accept message = data. Same difference.
2026-05-15 04:31:10 +0000 <monochrom> Meanwhile, FP people thought up taking CPS code, which requires a language that supports higher-order functions, and performing defunctionalization to convert continuations to data, therefore requiring only first-order functions. So now one doesn't pass around continuations, instead passes around data.
2026-05-15 04:30:21 +0000Inline(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) (Ping timeout: 272 seconds)
2026-05-15 04:29:49 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-05-15 04:27:24 +0000 <monochrom> Today people say "call method m() of object o". But that's not the original OO. Original OO said "send message m() to object o".
2026-05-15 04:24:55 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-15 04:20:47 +0000paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com)
2026-05-15 04:19:40 +0000machinedgod(~machinedg@d172-219-48-230.abhsia.telus.net) (Ping timeout: 244 seconds)
2026-05-15 04:12:49 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-15 04:07:56 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-15 03:56:24 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-05-15 03:49:54 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-15 03:39:54 +0000paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds)
2026-05-15 03:34:01 +0000 <jreicher> I'm not presupposing or claiming any kind of profundity here. I'm just playing with the ideas to see what I find. But TBH I'm not sure I understand what you mean by "messaging passing" in a pure functional context. Can you explain that, if the question makes sense?
2026-05-15 03:27:52 +0000craunts795335385(~craunts@136.158.7.226) (Quit: The Lounge - https://thelounge.chat)
2026-05-15 03:21:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-05-15 03:16:53 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-15 03:06:12 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-05-15 03:01:06 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-15 02:56:52 +0000tri(~tri@ool-44c70bcb.dyn.optonline.net)
2026-05-15 02:56:40 +0000tri(~tri@ool-44c70bcb.dyn.optonline.net) (Remote host closed the connection)
2026-05-15 02:52:23 +0000tri(~tri@ool-44c70bcb.dyn.optonline.net)
2026-05-15 02:50:17 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)