2025/05/12

2025-05-12 00:00:02 +0200acidjnk(~acidjnk@p200300d6e71c4f78180f209d949bdd6b.dip0.t-ipconnect.de) acidjnk
2025-05-12 00:02:20 +0200tromp(~textual@2001:1c00:3487:1b00:880c:a961:240d:9720) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-05-12 00:03:00 +0200turlando(~turlando@user/turlando) (Ping timeout: 265 seconds)
2025-05-12 00:03:45 +0200turlando(~turlando@user/turlando) turlando
2025-05-12 00:06:25 +0200jmcantrell(~weechat@user/jmcantrell) (Ping timeout: 252 seconds)
2025-05-12 00:07:27 +0200balthxzar(~balthxzar@user/Balthxzar) (Remote host closed the connection)
2025-05-12 00:07:45 +0200tomboy64(~tomboy64@user/tomboy64) (Read error: Connection reset by peer)
2025-05-12 00:07:56 +0200tomboy64(~tomboy64@user/tomboy64) tomboy64
2025-05-12 00:13:39 +0200xff0x(~xff0x@2405:6580:b080:900:5c9:3756:500a:fde9) (Ping timeout: 260 seconds)
2025-05-12 00:14:32 +0200xff0x(~xff0x@2405:6580:b080:900:9d68:c704:b1b0:2e99)
2025-05-12 00:17:00 +0200weary-traveler(~user@user/user363627) user363627
2025-05-12 00:41:16 +0200 <EvanR> must be for inevitable alpha conversion
2025-05-12 00:42:05 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2025-05-12 00:42:14 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2025-05-12 00:43:28 +0200Lord_of_Life_Lord_of_Life
2025-05-12 00:56:49 +0200acidjnk(~acidjnk@p200300d6e71c4f78180f209d949bdd6b.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2025-05-12 00:59:33 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-05-12 01:11:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-05-12 01:18:09 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2025-05-12 01:18:40 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-05-12 01:31:56 +0200sprotte24(~sprotte24@p200300d16f052e00b01ecb3cf5e5d8f9.dip0.t-ipconnect.de) (Quit: Leaving)
2025-05-12 01:32:16 +0200zdercti^(~zdercti@50.168.231.214)
2025-05-12 01:39:12 +0200ttybitnik(~ttybitnik@user/wolper) (Quit: Fading out...)
2025-05-12 01:47:48 +0200siliconcritters(~siliconcr@syn-068-188-168-151.res.spectrum.com)
2025-05-12 01:50:39 +0200 <monochrom> Too lazy to read that paper, but here is a common mistake ("variable capture") when using names: ((\x y -> x + y) y) z = (\y -> y + y) z = z + z instead of y + z. De Bruijn numbering (or other numbering schemes) are not vulnerable to this mistake, the two "y"s have different IDs.
2025-05-12 01:53:25 +0200 <monochrom> Lisp macros, at least for old Lisp, are also vulnerable. When the Scheme people say "hygienic macros" they mean that macro expansion takes care not to make that mistake again.
2025-05-12 01:53:44 +0200machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 252 seconds)
2025-05-12 01:55:41 +0200 <monochrom> Template Haskell gives you two functions for creating names, so that you can choose whether you want variable capture or not per variable. (There are legit use cases when you want it.)
2025-05-12 02:01:52 +0200sajenim(~sajenim@user/sajenim) sajenim
2025-05-12 02:02:20 +0200 <EvanR> I'm probably wrong about my observation, but using your example I'll show what I mean, (\x y -> x + y) y z, evaluate x+y in environment [x=>y, y=>z], y + z. I'll see if I can fix the example
2025-05-12 02:03:04 +0200weary-traveler(~user@user/user363627) (Remote host closed the connection)
2025-05-12 02:04:55 +0200 <EvanR> (\x y -> \z -> x) z
2025-05-12 02:06:09 +0200 <EvanR> yields an identity function instead of a constant function
2025-05-12 02:07:27 +0200 <EvanR> so when you convert from debruijn back to named variables you better use unique names
2025-05-12 02:08:32 +0200 <EvanR> (in the first example one of the y and in this example the z are free so wouldn't get IDs afaiui)
2025-05-12 02:08:41 +0200j1n37-(~j1n37@user/j1n37) j1n37
2025-05-12 02:09:28 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 272 seconds)
2025-05-12 02:18:05 +0200xff0x(~xff0x@2405:6580:b080:900:9d68:c704:b1b0:2e99) (Ping timeout: 260 seconds)
2025-05-12 02:18:44 +0200xff0x(~xff0x@2405:6580:b080:900:d755:12f8:638d:5cf9)
2025-05-12 02:21:30 +0200xff0x(~xff0x@2405:6580:b080:900:d755:12f8:638d:5cf9) (Client Quit)
2025-05-12 02:21:36 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2025-05-12 02:27:33 +0200 <monochrom> Environment is also a way to be invulnerable.
2025-05-12 02:28:55 +0200 <monochrom> The mistake happens if you really do what you tell beginners: substitute. :)
2025-05-12 02:31:57 +0200 <monochrom> The pros do one of. They do one of: numbering, environment, alpha-convert lambdas to fresh vars before substitute (e.g., rewrite (\x y -> x + y) to (\uuid1934 uuid3141 -> uuid1934 + uuid3141))
2025-05-12 02:32:23 +0200califax(~califax@user/califx) (Remote host closed the connection)
2025-05-12 02:32:29 +0200 <monochrom> I think Scheme hygienic macros use the alpha-convert way.
2025-05-12 02:34:34 +0200califax(~califax@user/califx) califx
2025-05-12 02:35:14 +0200xff0x(~xff0x@2405:6580:b080:900:42e0:bce1:22f1:2695)
2025-05-12 02:38:31 +0200 <EvanR> it seems to me that environment is real solution only if stuff in the environment doesn't have free variables, like in eager evaluation
2025-05-12 02:39:31 +0200 <EvanR> so ghc must do none of the above
2025-05-12 02:42:05 +0200meinside(uid24933@id-24933.helmsley.irccloud.com) meinside
2025-05-12 02:45:55 +0200jmcantrell(~weechat@user/jmcantrell) jmcantrell
2025-05-12 03:01:11 +0200siliconcritters(~siliconcr@syn-068-188-168-151.res.spectrum.com) (Quit: siliconcritters)
2025-05-12 03:05:13 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2025-05-12 03:06:59 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-05-12 03:11:49 +0200xff0x(~xff0x@2405:6580:b080:900:42e0:bce1:22f1:2695) (Ping timeout: 276 seconds)
2025-05-12 03:38:05 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2025-05-12 03:48:44 +0200hughjfch1(~hughjfche@vmi2417424.contaboserver.net) (Quit: WeeChat 4.4.3)
2025-05-12 03:49:14 +0200hughjfchen(~hughjfche@vmi2417424.contaboserver.net) hughjfchen
2025-05-12 03:49:41 +0200j1n37-(~j1n37@user/j1n37) (Ping timeout: 248 seconds)
2025-05-12 03:50:26 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-05-12 03:53:23 +0200 <EvanR> I'm wrong, since the environment would have first class functions with their own environment in a closure
2025-05-12 03:54:49 +0200j1n37-(~j1n37@user/j1n37) j1n37
2025-05-12 03:56:40 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 276 seconds)
2025-05-12 04:07:53 +0200xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2025-05-12 04:13:00 +0200califax(~califax@user/califx) (Remote host closed the connection)
2025-05-12 04:13:24 +0200califax(~califax@user/califx) califx
2025-05-12 04:16:37 +0200tavare(~tavare@150.129.88.189) tavare
2025-05-12 04:16:37 +0200tavare(~tavare@150.129.88.189) (Changing host)
2025-05-12 04:16:37 +0200tavare(~tavare@user/tavare) tavare
2025-05-12 04:19:18 +0200td_(~td@i53870935.versanet.de) (Ping timeout: 272 seconds)
2025-05-12 04:19:23 +0200tavare(~tavare@user/tavare) (Remote host closed the connection)
2025-05-12 04:20:45 +0200td_(~td@i53870921.versanet.de) td_
2025-05-12 04:37:54 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)