2026/05/15

Newest at the top

2026-05-15 07:05:20 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-15 06:54:50 +0000sord937(~sord937@gateway/tor-sasl/sord937) sord937
2026-05-15 06:54:27 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-05-15 06:49:34 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-15 06:39:01 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-05-15 06:35:35 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2026-05-15 06:32:50 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-15 06:23:48 +0000chexum(~quassel@gateway/tor-sasl/chexum) chexum
2026-05-15 06:23:25 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2026-05-15 06:23:12 +0000chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2026-05-15 06:22:29 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2026-05-15 06:17:01 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-15 06:13:46 +0000down200(~down200@shell.lug.mtu.edu) down200
2026-05-15 06:09:36 +0000down200(~down200@shell.lug.mtu.edu) (Quit: ZNC - https://znc.in)
2026-05-15 06:06:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-15 06:03:06 +0000peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 246 seconds)
2026-05-15 06:01:28 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
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