2026/04/13

2026-04-13 00:14:55 +0000acidjnk_new3(~acidjnk@p200300d6e700e58684295e76a51b504e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2026-04-13 00:15:33 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
2026-04-13 00:23:42 +0000Angelz(Angelz@user/angelz) (Ping timeout: 244 seconds)
2026-04-13 00:26:19 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 00:33:08 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-04-13 00:35:54 +0000foul_owl(~kerry@94.156.149.97) foul_owl
2026-04-13 00:43:40 +0000Angelz(Angelz@angelz.oddprotocol.org)
2026-04-13 00:45:53 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 00:46:01 +0000infinity0(~infinity0@pwned.gg) (Ping timeout: 248 seconds)
2026-04-13 00:50:26 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-04-13 00:53:29 +0000Angelz(Angelz@angelz.oddprotocol.org) (Ping timeout: 248 seconds)
2026-04-13 00:54:36 +0000xff0x(~xff0x@ai112096.d.east.v6connect.net) (Ping timeout: 244 seconds)
2026-04-13 01:06:35 +0000infinity0(~infinity0@pwned.gg) infinity0
2026-04-13 01:14:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 01:15:30 +0000Angelz(Angelz@Angelz.oddprotocol.org)
2026-04-13 01:19:05 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-04-13 01:20:54 +0000DetourNetworkUK(~DetourNet@user/DetourNetworkUK) (Ping timeout: 268 seconds)
2026-04-13 01:23:58 +0000Angelz(Angelz@Angelz.oddprotocol.org) (Ping timeout: 276 seconds)
2026-04-13 01:24:46 +0000DetourNetworkUK(~DetourNet@user/DetourNetworkUK) DetourNetworkUK
2026-04-13 01:30:24 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 01:35:07 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-04-13 01:42:17 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2026-04-13 01:44:12 +0000tremon(~tremon@83.80.159.219) (Quit: getting boxed in)
2026-04-13 01:46:47 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 01:51:57 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2026-04-13 01:52:42 +0000newmind(~newmind@user/newmind) (Ping timeout: 265 seconds)
2026-04-13 01:54:30 +0000newmind(~newmind@user/newmind) newmind
2026-04-13 02:02:37 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 02:07:02 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-04-13 02:11:48 +0000jmcantrell_(~weechat@user/jmcantrell) jmcantrell
2026-04-13 02:19:03 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 02:19:59 +0000jmcantrell_jmcantrell
2026-04-13 02:25:48 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-04-13 02:36:37 +0000Angelz(Angelz@2605:6400:30:fc15:d55b:fa6c:bd14:9973)
2026-04-13 02:46:31 +0000vidak(~vidak@2407:e400:7800:2c01:c4db:d9c4:aac4:94f6) (Ping timeout: 276 seconds)
2026-04-13 02:54:43 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 02:54:58 +0000Angelz(Angelz@2605:6400:30:fc15:d55b:fa6c:bd14:9973) (Ping timeout: 276 seconds)
2026-04-13 02:59:56 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-04-13 03:01:42 +0000jmcantrell(~weechat@user/jmcantrell) (Ping timeout: 244 seconds)
2026-04-13 03:02:22 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com) lisbeths
2026-04-13 03:12:04 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 03:16:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-04-13 03:25:26 +0000Angelz(Angelz@angelz.oddprotocol.org)
2026-04-13 03:27:21 +0000divlamir(~divlamir@user/divlamir) (Read error: Connection reset by peer)
2026-04-13 03:27:31 +0000divlamir(~divlamir@user/divlamir) divlamir
2026-04-13 03:30:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 03:34:06 +0000Angelz(Angelz@angelz.oddprotocol.org) (Ping timeout: 268 seconds)
2026-04-13 03:34:46 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-04-13 03:43:49 +0000rekahsoft(~rekahsoft@bras-base-orllon1103w-grc-20-76-67-111-168.dsl.bell.ca) (Remote host closed the connection)
2026-04-13 03:47:19 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 03:51:46 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-04-13 04:03:54 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 04:11:01 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-04-13 04:21:00 +0000slomp_(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 255 seconds)
2026-04-13 04:23:58 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 04:28:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-04-13 04:35:59 +0000michalz(~michalz@185.246.207.193)
2026-04-13 04:38:40 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 04:40:48 +0000machinedgod(~machinedg@d172-219-48-230.abhsia.telus.net) (Ping timeout: 255 seconds)
2026-04-13 04:46:23 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2026-04-13 04:48:09 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 248 seconds)
2026-04-13 04:55:47 +0000merijn(~merijn@62.45.136.136) merijn
2026-04-13 05:00:43 +0000merijn(~merijn@62.45.136.136) (Ping timeout: 265 seconds)
2026-04-13 05:02:08 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 05:07:13 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 268 seconds)
2026-04-13 05:12:48 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 05:17:10 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-04-13 05:19:00 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 05:19:34 +0000endor(~endor@user/endor) endor
2026-04-13 05:21:15 +0000endor(~endor@user/endor) (Quit: Leaving)
2026-04-13 05:21:38 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2026-04-13 05:28:30 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 255 seconds)
2026-04-13 05:28:51 +0000Angelz(Angelz@angelz.oddprotocol.org)
2026-04-13 05:30:42 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 05:33:45 +0000Angelz(Angelz@angelz.oddprotocol.org) (Ping timeout: 246 seconds)
2026-04-13 05:35:12 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-04-13 05:47:20 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 05:52:06 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-04-13 05:52:08 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-04-13 05:55:02 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com) lisbeths
2026-04-13 05:56:21 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 05:56:44 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 06:01:29 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 272 seconds)
2026-04-13 06:02:07 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-04-13 06:02:40 +0000peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 245 seconds)
2026-04-13 06:09:56 +0000mra(~mra@172-105-19-44.ip.linodeusercontent.com) mra
2026-04-13 06:12:11 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 06:13:55 +0000takuan(~takuan@d8D86B9E9.access.telenet.be)
2026-04-13 06:17:22 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 248 seconds)
2026-04-13 06:24:33 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 06:28:43 +0000Angelz(Angelz@2605:6400:30:fc15:d55b:fa6c:bd14:9973)
2026-04-13 06:30:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 06:31:46 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 248 seconds)
2026-04-13 06:34:31 +0000czan(~czan@user/mange) (Quit: Zzz...)
2026-04-13 06:35:21 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-04-13 06:37:14 +0000tromp(~textual@2001:1c00:340e:2700:34e6:fa0e:340c:230e)
2026-04-13 06:42:26 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-04-13 06:46:17 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 06:47:08 +0000CiaoSen(~Jura@p549cbfb1.dip0.t-ipconnect.de) CiaoSen
2026-04-13 06:50:12 +0000synchromesh(~john@2406:5a00:2412:2c00:f13a:623d:2f3c:c3c6) (Read error: Connection reset by peer)
2026-04-13 06:51:12 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-04-13 06:51:12 +0000synchromesh(~john@2406:5a00:2412:2c00:f13a:623d:2f3c:c3c6) synchromesh
2026-04-13 06:54:53 +0000wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2026-04-13 06:55:16 +0000wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2026-04-13 06:57:04 +0000sord937(~sord937@gateway/tor-sasl/sord937) sord937
2026-04-13 06:57:32 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 07:00:18 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 07:02:43 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-04-13 07:05:18 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 256 seconds)
2026-04-13 07:05:47 +0000Angelz(Angelz@2605:6400:30:fc15:d55b:fa6c:bd14:9973) (Changing host)
2026-04-13 07:05:47 +0000Angelz(Angelz@user/angelz) angelz
2026-04-13 07:15:29 +0000peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 268 seconds)
2026-04-13 07:21:28 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 07:27:49 +0000CiaoSen(~Jura@p549cbfb1.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2026-04-13 07:29:04 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 245 seconds)
2026-04-13 07:38:20 +0000 <haskellbridge> <Liamzee> thanks probie i guess, I finally understand why everyone uses nix
2026-04-13 07:39:14 +0000 <haskellbridge> <Liamzee> if you want to microservices haskell, you need docker compose, kubernetes, or nix, docker compose is fragile as all hell with Haskell, and the pain is sufficient to get people to move to nix
2026-04-13 07:40:48 +0000phm(~peter@fsf/member/phm) (Ping timeout: 255 seconds)
2026-04-13 07:41:19 +0000phm(~peter@fsf/member/phm) phm
2026-04-13 07:41:52 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 07:52:54 +0000merijn(~merijn@77.242.116.146) merijn
2026-04-13 07:55:30 +0000leppard(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) Inline
2026-04-13 08:01:19 +0000leppard(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) (Read error: Connection reset by peer)
2026-04-13 08:01:38 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2026-04-13 08:02:14 +0000leppard(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) Inline
2026-04-13 08:06:29 +0000sapphire-arches(~sapphire-@user/sapphire-arches) (Quit: sapphire-arches)
2026-04-13 08:07:31 +0000emmanuelux(~em@user/emmanuelux) (Quit: bye)
2026-04-13 08:12:12 +0000alter2000(~alter2000@user/alter2000) alter2000
2026-04-13 08:17:20 +0000__monty__(~toonn@user/toonn) toonn
2026-04-13 08:17:42 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 255 seconds)
2026-04-13 08:24:18 +0000tromp(~textual@2001:1c00:340e:2700:34e6:fa0e:340c:230e) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-04-13 08:29:24 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 08:31:51 +0000tromp(~textual@2001:1c00:340e:2700:34e6:fa0e:340c:230e)
2026-04-13 08:38:39 +0000srazkvt(~sarah@user/srazkvt) srazkvt
2026-04-13 08:47:49 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 245 seconds)
2026-04-13 08:50:12 +0000tromp(~textual@2001:1c00:340e:2700:34e6:fa0e:340c:230e) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-04-13 08:54:04 +0000ft(~ft@p508db287.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2026-04-13 09:01:53 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 09:06:26 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 248 seconds)
2026-04-13 09:09:24 +0000acidjnk_new3(~acidjnk@p200300d6e700e5867783b930023161c8.dip0.t-ipconnect.de)
2026-04-13 09:15:20 +0000Square(~Square4@user/square) Square
2026-04-13 09:18:12 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 09:22:36 +0000puke(~puke@user/puke) (Ping timeout: 250 seconds)
2026-04-13 09:28:38 +0000weary-traveler(~user@user/user363627) (Remote host closed the connection)
2026-04-13 09:28:56 +0000sixfourtwelve(~ethanmorg@static.82.129.225.46.clients.your-server.de)
2026-04-13 09:35:22 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 276 seconds)
2026-04-13 09:55:13 +0000tromp(~textual@2001:1c00:340e:2700:34e6:fa0e:340c:230e)
2026-04-13 09:55:31 +0000karenw(~karenw@user/karenw) karenw
2026-04-13 10:00:54 +0000acidjnk_new(~acidjnk@p200300d6e700e507ef1cadbb02cce561.dip0.t-ipconnect.de)
2026-04-13 10:02:16 +0000karenw(~karenw@user/karenw) (Quit: Deep into that darkness peering...)
2026-04-13 10:03:07 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 10:04:02 +0000acidjnk_new3(~acidjnk@p200300d6e700e5867783b930023161c8.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2026-04-13 10:05:12 +0000DetourNe-(~DetourNet@user/DetourNetworkUK) DetourNetworkUK
2026-04-13 10:05:14 +0000DetourNetworkUK(~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer)
2026-04-13 10:05:28 +0000tremon(~tremon@83.80.159.219) tremon
2026-04-13 10:07:29 +0000DetourNe-DetourNetworkUK
2026-04-13 10:08:09 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 246 seconds)
2026-04-13 10:17:16 +0000tromp(~textual@2001:1c00:340e:2700:34e6:fa0e:340c:230e) (Read error: Connection reset by peer)
2026-04-13 10:19:59 +0000danza(~danza@user/danza) danza
2026-04-13 10:34:46 +0000danza(~danza@user/danza) (Remote host closed the connection)
2026-04-13 10:37:47 +0000CiaoSen(~Jura@p549cbfb1.dip0.t-ipconnect.de) CiaoSen
2026-04-13 10:48:50 +0000Fischmiep(~Fischmiep@user/Fischmiep) (Quit: ZNC - https://znc.in)
2026-04-13 10:49:01 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 272 seconds)
2026-04-13 10:49:09 +0000Fischmiep(~Fischmiep@user/Fischmiep) Fischmiep
2026-04-13 10:51:34 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 10:56:31 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 244 seconds)
2026-04-13 11:08:20 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 11:14:49 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 248 seconds)
2026-04-13 11:20:13 +0000fp`(~user@staff237.kora-dyn.aalto.fi)
2026-04-13 11:21:26 +0000arandombit(~arandombi@2a02:2455:8656:7100:402b:b9d0:7e1b:e24b)
2026-04-13 11:21:26 +0000arandombit(~arandombi@2a02:2455:8656:7100:402b:b9d0:7e1b:e24b) (Changing host)
2026-04-13 11:21:26 +0000arandombit(~arandombi@user/arandombit) arandombit
2026-04-13 11:21:36 +0000 <fp`> I'd like some help naming a function. It's like scanr in that it yields recursive subresults, but it also puts those subresults into the accumulator of the folding function. I came up with arrayScanr, but I think it doesn't capture that the folding function got a change.
2026-04-13 11:24:16 +0000 <alter2000> would it help to take a page out of Fennel's playbook? that sounds like scanr + fennel's (->)
2026-04-13 11:24:33 +0000 <alter2000> ctx https://fennel-lang.org/reference#------and---threading-macros
2026-04-13 11:27:14 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 11:28:08 +0000CiaoSen(~Jura@p549cbfb1.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2026-04-13 11:28:39 +0000 <fp`> Yeah that seems to be the thing. Fennel calls them threading macros, so would threadedScanr make sense? I'd fear though that that sounds concurrency-related.
2026-04-13 11:29:44 +0000 <alter2000> hmm fair point, it does but given the context it doesn't sound likely; or are you actually involving threads in your library?
2026-04-13 11:32:13 +0000 <mauke> :t scanr
2026-04-13 11:32:13 +0000 <lambdabot> (a -> b -> b) -> b -> [a] -> [b]
2026-04-13 11:32:16 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 244 seconds)
2026-04-13 11:32:36 +0000 <mauke> :t mapAccumL
2026-04-13 11:32:37 +0000 <lambdabot> Traversable t => (s -> a -> (s, b)) -> s -> t a -> (s, t b)
2026-04-13 11:32:39 +0000 <fp`> No, I'm just doing some linear algebra, shouldn't be any concurrency in sight
2026-04-13 11:34:51 +0000 <alter2000> then I'd say it's a safe bet; chances are a good chunk of your potential users are already somewhat familiar with lisp style parameter/argument threading
2026-04-13 11:39:36 +0000haritz(~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8)
2026-04-13 11:39:36 +0000haritz(~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8) (Changing host)
2026-04-13 11:39:36 +0000haritz(~hrtz@user/haritz) haritz
2026-04-13 11:45:31 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 11:50:10 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 248 seconds)
2026-04-13 11:55:45 +0000karenw(~karenw@user/karenw) karenw
2026-04-13 11:58:13 +0000karenw(~karenw@user/karenw) (Client Quit)
2026-04-13 12:03:51 +0000oats(~oats@user/oats) (Read error: Connection reset by peer)
2026-04-13 12:04:06 +0000oats(~oats@user/oats) oats
2026-04-13 12:04:18 +0000arandombit(~arandombi@user/arandombit) (Ping timeout: 244 seconds)
2026-04-13 12:18:02 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 12:24:17 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 252 seconds)
2026-04-13 12:27:37 +0000 <merijn> fp`: You know what's unironically really good at coming up with names from a description like that?
2026-04-13 12:27:40 +0000 <merijn> ChatGPT
2026-04-13 12:31:01 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2026-04-13 12:35:20 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 12:40:09 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 248 seconds)
2026-04-13 12:47:39 +0000rainbyte(~rainbyte@181.47.219.3) (Read error: Connection reset by peer)
2026-04-13 12:48:54 +0000arandombit(~arandombi@user/arandombit) arandombit
2026-04-13 12:50:44 +0000rainbyte(~rainbyte@181.47.219.3) rainbyte
2026-04-13 12:53:21 +0000 <fp`> merijn: Sure, but I'd rather engage with a community that uses the language, learn the conventions from them, and learn about ancillary tools, like in this I learned about Fennel. The answer's not that important to me, the process is the main thing.
2026-04-13 12:53:59 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 12:54:36 +0000 <fp`> ancillary knowledge more generally, really. Not just tools.
2026-04-13 12:58:05 +0000xff0x(~xff0x@2405:6580:b080:900:64fb:89e9:b5c1:12b3)
2026-04-13 13:00:45 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 255 seconds)
2026-04-13 13:02:03 +0000rekahsoft(~rekahsoft@bras-base-orllon1103w-grc-20-76-67-111-168.dsl.bell.ca) rekahsoft
2026-04-13 13:11:24 +0000arandombit(~arandombi@user/arandombit) (Remote host closed the connection)
2026-04-13 13:13:20 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 13:14:06 +0000arandombit(~arandombi@user/arandombit) arandombit
2026-04-13 13:18:29 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 272 seconds)
2026-04-13 13:19:33 +0000arandombit(~arandombi@user/arandombit) (Ping timeout: 268 seconds)
2026-04-13 13:19:45 +0000Googulator(~Googulato@94-21-172-213.pool.digikabel.hu)
2026-04-13 13:30:14 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 13:34:57 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 255 seconds)
2026-04-13 13:50:00 +0000karenw(~karenw@user/karenw) karenw
2026-04-13 13:50:01 +0000fp`(~user@staff237.kora-dyn.aalto.fi) (Ping timeout: 248 seconds)
2026-04-13 13:51:00 +0000Googulator(~Googulato@94-21-172-213.pool.digikabel.hu) (Quit: Client closed)
2026-04-13 13:51:24 +0000Googulator(~Googulato@94-21-172-213.pool.digikabel.hu)
2026-04-13 14:00:00 +0000arandombit(~arandombi@2a02:2455:8656:7100:55bf:4eed:c642:43c4)
2026-04-13 14:00:00 +0000arandombit(~arandombi@2a02:2455:8656:7100:55bf:4eed:c642:43c4) (Changing host)
2026-04-13 14:00:00 +0000arandombit(~arandombi@user/arandombit) arandombit
2026-04-13 14:03:16 +0000arandombit(~arandombi@user/arandombit) (Remote host closed the connection)
2026-04-13 14:05:02 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 14:06:40 +0000myxos(~myxos@67-1-178-42.tcso.qwest.net) (Remote host closed the connection)
2026-04-13 14:10:07 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 268 seconds)
2026-04-13 14:12:56 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 14:14:00 +0000myxos(~myxos@67-1-178-42.tcso.qwest.net) myxokephale
2026-04-13 14:17:42 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 255 seconds)
2026-04-13 14:18:50 +0000potatomuncher|2(~kvirc@user/potatomuncher) potatomuncher
2026-04-13 14:21:08 +0000poscat0x04(~poscat@user/poscat) poscat
2026-04-13 14:22:50 +0000poscat(~poscat@user/poscat) (Ping timeout: 268 seconds)
2026-04-13 14:31:09 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 14:38:29 +0000bggd(~bgg@user/bggd) (Remote host closed the connection)
2026-04-13 14:38:55 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 272 seconds)
2026-04-13 14:39:04 +0000Googulator(~Googulato@94-21-172-213.pool.digikabel.hu) (Quit: Client closed)
2026-04-13 14:39:20 +0000Googulator(~Googulato@94-21-172-213.pool.digikabel.hu)
2026-04-13 14:40:54 +0000weary-traveler(~user@user/user363627) user363627
2026-04-13 14:41:36 +0000jmcantrell_(~weechat@user/jmcantrell) jmcantrell
2026-04-13 14:43:23 +0000pavonia(~user@user/siracusa) (Quit: Bye!)
2026-04-13 14:49:55 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 14:55:05 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 248 seconds)
2026-04-13 15:01:29 +0000fp1(~Thunderbi@87-95-80-117.bb.dnainternet.fi) fp
2026-04-13 15:02:15 +0000danza(~danza@user/danza) danza
2026-04-13 15:02:15 +0000fp1(~Thunderbi@87-95-80-117.bb.dnainternet.fi) (Read error: Connection reset by peer)
2026-04-13 15:05:03 +0000machinedgod(~machinedg@d172-219-48-230.abhsia.telus.net) machinedgod
2026-04-13 15:06:37 +0000synchromesh(~john@2406:5a00:2412:2c00:f13a:623d:2f3c:c3c6) (Read error: Connection reset by peer)
2026-04-13 15:07:34 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 15:08:00 +0000synchromesh(~john@2406:5a00:2412:2c00:2c29:cc68:8842:5c05) synchromesh
2026-04-13 15:08:37 +0000sixfourtwelve(~ethanmorg@static.82.129.225.46.clients.your-server.de) ()
2026-04-13 15:13:05 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net) (Ping timeout: 245 seconds)
2026-04-13 15:19:47 +0000Milan_Vanca(~milan@user/Milan-Vanca:32634) Milan_Vanca
2026-04-13 15:25:49 +0000 <Milan_Vanca> Hello I have found this statement in book "Evaluating something to normal form involves traversing the whole of its structure, so you should bear in mind that it is O(n) for a structure of size n, whereas seq is O(1). It is therefore a good idea to avoid repeated uses of force or deepseq on the same data." Is that correct? I thought that in ghc "results of evalutaions" are shared. So force
2026-04-13 15:25:51 +0000 <Milan_Vanca> longList; force longList should not traverse list 2 times
2026-04-13 15:26:12 +0000alter2000(~alter2000@user/alter2000) (Read error: Connection reset by peer)
2026-04-13 15:27:03 +0000 <[exa]> Milan_Vanca: the issue with `deepseq` is that it doesn't know if there's a thunk somewhere in the middle or not, so it has to traverse there again and again
2026-04-13 15:27:54 +0000 <[exa]> (by having a head-normal data structure there's no way to tell if it points to a thunk, and the information that it was "already checked" isn't stored anywhere)
2026-04-13 15:29:16 +0000 <[exa]> BUT you can memoize the result of `deepseq` in a `let` and then you can use as many times you want and it's always going to be memoized as fully evaluated.
2026-04-13 15:29:39 +0000 <[exa]> (If confusing I can try to draw a picture :D )
2026-04-13 15:30:15 +0000slomp(~slomp@47-158-199-90.lsan.ca.frontiernet.net)
2026-04-13 15:31:23 +0000v0id_7(~v0id_7@user/v0id-7:62772) v0id_7
2026-04-13 15:32:17 +0000 <Milan_Vanca> Isn't that "shortcoming" of GHC to not remember that recursive datastructure was evaluated to NF completly?
2026-04-13 15:32:26 +0000 <Milan_Vanca> Maybe it is infeasible to do so?
2026-04-13 15:33:39 +0000 <Milan_Vanca> For that deepseq would need to be implemented in GHC and not just in term of seq maybe..
2026-04-13 15:34:33 +0000 <Milan_Vanca> [exa]: And maybe picture would clarify it for me. Could you please draw a picture?
2026-04-13 15:36:00 +0000 <__monty__> Wouldn't that end up with a traversal of all the NF datastructures known about instead of the datastructure you actually care about?
2026-04-13 15:39:50 +0000 <Milan_Vanca> __monty__: I don't think so.. we write force longList1 so that evaluates it all the way down right? or maybe only to [thunk, thunk] from thunk:thunk and not [1, 2] ?
2026-04-13 15:41:52 +0000 <Milan_Vanca> Yeah it is probably like that...there might not be need to evaluate further just the list
2026-04-13 15:44:20 +0000 <c_wraith> I wouldn't call it a shortcoming
2026-04-13 15:45:42 +0000 <c_wraith> right now, a value at run time has states for "this has been evaluated to a constructor" and "this hasn't been evaluated".
2026-04-13 15:46:11 +0000 <c_wraith> Adding a state for "this has been fully evaluated" would add overhead to every single (lifted) value in memory
2026-04-13 15:49:36 +0000 <c_wraith> Especially since it's not actually clear when that flag would be set. Would `rnf' need special RTS integration to set it specially? Would it check every time a value is evaluated if that makes some parent fully evaluated?
2026-04-13 15:51:44 +0000Guest62(~Guest62@p200300ca8f398000a276c2fd551b1612.dip0.t-ipconnect.de)
2026-04-13 15:52:46 +0000 <c_wraith> This isn't exactly automatic memoization, but it ends up sharing all the same issues.
2026-04-13 15:54:40 +0000 <c_wraith> My advice is to never actually use `rnf' in real code. It's a handy debugging tool if you can't find the source of unevaluated expressions in your program, but it's not a good solution.
2026-04-13 15:54:45 +0000 <mauke> a two-element list looks like x1@((:) x2 x3@((:) x4 x5)). each of those x's can hide more unevaluated work
2026-04-13 15:55:59 +0000 <[exa]> Milan_Vanca: ok so I'll draw a picture in IRC :D
2026-04-13 15:56:12 +0000 <c_wraith> Either prevent nested buildup of unevaluated expressions in the first place, or use an unlifted data type if you can't be bothered.
2026-04-13 15:56:18 +0000 <[exa]> Milan_Vanca: the unevaluated problem looks like: D1 --> Thunk1
2026-04-13 15:56:41 +0000 <[exa]> Milan_Vanca: if you deepseq it, you can get something like: D1 --> D2 --> D3
2026-04-13 15:57:05 +0000 <[exa]> Milan_Vanca: now, if you deepseq it again, the deepseq only sees: D1 --> (something unknown behind a pointer)
2026-04-13 15:57:43 +0000 <[exa]> Milan_Vanca: without traversing the pointer it is not sure if there's anything to evaluate, in turn it needs to traverse all of these pointers
2026-04-13 15:58:07 +0000 <[exa]> and there's `n` such pointers. It's probably faster than the first deepseq esp. if the computation was "hard", but still `n` pointers.
2026-04-13 15:59:54 +0000jmcantrell_(~weechat@user/jmcantrell) (Ping timeout: 244 seconds)
2026-04-13 16:00:30 +0000danza(~danza@user/danza) (Remote host closed the connection)
2026-04-13 16:01:52 +0000 <[exa]> Milan_Vanca: anyway you could implement some magical mark for "this has been deepseq'd" but there would be overhead and I don't see people going that way especially since the "right way" is to just make sure you don't accumulate too much thunk material in the first place
2026-04-13 16:04:54 +0000 <Milan_Vanca> Ty guyz...I still don't fully understand. It's probably better to just continue learning. I will try to remember prevent accumulation of thunks. :)
2026-04-13 16:06:19 +0000 <mauke> > length [error "x", error "y"]
2026-04-13 16:06:20 +0000 <lambdabot> 2
2026-04-13 16:06:32 +0000 <mauke> > [error "x", error "y"] `seq` "WHNF"
2026-04-13 16:06:34 +0000 <lambdabot> "WHNF"
2026-04-13 16:10:03 +0000 <yin> i just found out that hlint doesn't iterate through refactors
2026-04-13 16:10:52 +0000 <yin> eg: it suggests `if True then False else True` -> `not True`
2026-04-13 16:10:55 +0000 <dutchie> https://github.com/ndmitchell/hlint?tab=readme-ov-file#why-are-hints-not-applied-recursively
2026-04-13 16:11:08 +0000polykernel(~polykerne@user/polykernel) (Remote host closed the connection)
2026-04-13 16:11:28 +0000polykernel(~polykerne@user/polykernel) polykernel
2026-04-13 16:11:54 +0000 <mauke> Milan_Vanca: picture: https://i.imgur.com/yuu9hiq.png :-D
2026-04-13 16:12:11 +0000 <yin> dutchie: totally fair
2026-04-13 16:12:24 +0000 <__monty__> How does it get to `not True`? Surely it's just eliminating the else-branch because of the tautological test?
2026-04-13 16:12:56 +0000 <mauke> if X then False else True --> not X
2026-04-13 16:13:25 +0000 <__monty__> Is that really more general as a pattern?
2026-04-13 16:13:38 +0000 <mauke> does it have to be?
2026-04-13 16:13:52 +0000 <yin> it improves lazyness
2026-04-13 16:14:35 +0000 <__monty__> How?
2026-04-13 16:16:09 +0000 <Milan_Vanca> > deepseq [error "x", error "y"] "NF"
2026-04-13 16:16:10 +0000 <lambdabot> Variable not in scope: deepseq :: [a0] -> String -> t
2026-04-13 16:17:17 +0000 <mauke> @let import Control.DeepSeq
2026-04-13 16:17:18 +0000 <lambdabot> /sandbox/tmp/.L.hs:50:1: error: [GHC-87110]
2026-04-13 16:17:18 +0000 <lambdabot> Could not load module ‘Control.DeepSeq’.
2026-04-13 16:17:18 +0000 <lambdabot> It is a member of the hidden package ‘deepseq-1.5.0.0’.
2026-04-13 16:18:48 +0000merijn(~merijn@77.242.116.146) (Ping timeout: 246 seconds)
2026-04-13 16:20:16 +0000 <janus> % import Control.DeepSeq
2026-04-13 16:20:16 +0000 <yahb2> <no output>
2026-04-13 16:20:35 +0000 <janus> % deepseq [ error "x", error "y"] "NF"
2026-04-13 16:20:35 +0000 <yahb2> <interactive>:7:1: error: [GHC-39999] ; • Ambiguous type variable ‘a0’ arising from a use of ‘deepseq’ ; prevents the constraint ‘(NFData a0)’ from being solved. ; Probable fix: use...
2026-04-13 16:21:05 +0000 <mauke> % deepseq [ error "x", error "y" :: Int] "NF"
2026-04-13 16:21:05 +0000 <yahb2> *** Exception: x ; ; HasCallStack backtrace: ; error, called at <interactive>:9:11 in interactive:Ghci3
2026-04-13 16:22:10 +0000 <Milan_Vanca> let a = 1 + 1 :: Int
2026-04-13 16:22:15 +0000 <Milan_Vanca> > let a = 1 + 1 :: Int
2026-04-13 16:22:16 +0000 <lambdabot> not an expression: ‘let a = 1 + 1 :: Int’
2026-04-13 16:22:38 +0000 <Milan_Vanca> Ah ok.. so I can't do this here :D
2026-04-13 16:22:40 +0000 <Milan_Vanca> nvm
2026-04-13 16:22:51 +0000 <janus> @let a = 1 + 1 :: Int
2026-04-13 16:22:51 +0000 <mauke> > let a = 1 + 1 :: Int in a
2026-04-13 16:22:51 +0000 <lambdabot> Defined.
2026-04-13 16:22:52 +0000 <lambdabot> 2
2026-04-13 16:23:04 +0000 <mauke> > a
2026-04-13 16:23:05 +0000 <lambdabot> Ambiguous occurrence ‘a’.
2026-04-13 16:23:05 +0000 <lambdabot> It could refer to
2026-04-13 16:23:05 +0000 <lambdabot> either ‘Debug.SimpleReflect.a’,
2026-04-13 16:23:07 +0000 <mauke> @undefine
2026-04-13 16:23:07 +0000 <lambdabot> Undefined.
2026-04-13 16:23:40 +0000 <mauke> > (a + 1) ^ 2
2026-04-13 16:23:41 +0000 <lambdabot> (a + 1) * (a + 1)
2026-04-13 16:24:34 +0000 <janus> what's the difference between using @let and '> let' ?
2026-04-13 16:25:17 +0000 <mauke> the latter introduces an expression
2026-04-13 16:25:39 +0000 <mauke> the former adds a top-level statement to the execution environment
2026-04-13 16:26:21 +0000 <janus> yahb is just ghci right? so you use lambdabot so that you can get SimpleReflect?
2026-04-13 16:26:27 +0000 <mauke> > (let map = 20 in map + 1) * 2
2026-04-13 16:26:28 +0000 <lambdabot> 42
2026-04-13 16:28:36 +0000karenw(~karenw@user/karenw) (Remote host closed the connection)
2026-04-13 16:30:02 +0000 <Milan_Vanca> @let main = print "Hello"
2026-04-13 16:30:04 +0000 <lambdabot> Defined.
2026-04-13 16:30:06 +0000 <Milan_Vanca> @:main
2026-04-13 16:30:06 +0000 <lambdabot> Here we are, Pinky--at the dawn of time!
2026-04-13 16:30:18 +0000 <Milan_Vanca> @:sprint main
2026-04-13 16:30:18 +0000 <lambdabot> Unknown command, try @list
2026-04-13 16:30:42 +0000 <mauke> lambdabot isn't ghci :-)
2026-04-13 16:30:52 +0000 <__monty__> You can experiment with lambdabot in a query, FYI.
2026-04-13 16:31:10 +0000 <yin> __monty__: after considering it, i don't think it does after all
2026-04-13 16:31:35 +0000 <Milan_Vanca> __monty__: what query?
2026-04-13 16:31:40 +0000 <EvanR> > (a + 1) * (a + 1)
2026-04-13 16:31:41 +0000 <lambdabot> (a + 1) * (a + 1)
2026-04-13 16:31:48 +0000 <EvanR> a^2 + 2*a + 1
2026-04-13 16:31:58 +0000 <__monty__> Milan_Vanca: AKA a private message.
2026-04-13 16:32:00 +0000 <mauke> Milan_Vanca: I'm not sure about weechat, but try "/query lambdabot"
2026-04-13 16:32:10 +0000 <Milan_Vanca> Ah thank you
2026-04-13 16:32:38 +0000 <Milan_Vanca> mauke: You can see my client? :D
2026-04-13 16:33:01 +0000 <mauke> I asked it :-)
2026-04-13 16:33:06 +0000 <mauke> by sending a CTCP VERSION request
2026-04-13 16:34:33 +0000 <__monty__> yin: I guess the pattern rolls out of the definition of `not` a bit more readily? The assumption being that people are less likely to write a tautological test than they are to spell out negation?
2026-04-13 16:35:20 +0000 <mauke> Milan_Vanca: I don't see a specific weechat command for it. try "/ctcp mauke version"
2026-04-13 16:35:57 +0000karenw(~karenw@user/karenw) karenw
2026-04-13 16:36:42 +0000jmcantrell_(~weechat@user/jmcantrell) jmcantrell
2026-04-13 16:43:53 +0000hellwolf(~user@7530-0dab-5d73-cf2b-0f00-4d40-07d0-2001.sta.estpak.ee) (Ping timeout: 248 seconds)
2026-04-13 16:46:14 +0000m(~travltux@user/travltux) (Quit: WeeChat 4.7.2)
2026-04-13 16:46:22 +0000 <Milan_Vanca> Like I was able to send command but I see no response
2026-04-13 16:47:00 +0000 <Milan_Vanca> mauke: No sorry, I see it just in different "window"
2026-04-13 16:47:02 +0000 <mauke> I can see your requests in my status window
2026-04-13 16:47:05 +0000 <mauke> ah :-)
2026-04-13 16:47:49 +0000 <Milan_Vanca> ty that is new command I learned today :)
2026-04-13 16:48:27 +0000 <Milan_Vanca> But enough fun.. lets go back to studying :D
2026-04-13 16:48:56 +0000sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2026-04-13 16:49:19 +0000sord937(~sord937@gateway/tor-sasl/sord937) sord937
2026-04-13 16:49:34 +0000hellwolf(~user@17e7-d9b7-b727-51a4-0f00-4d40-07d0-2001.sta.estpak.ee) hellwolf
2026-04-13 17:01:04 +0000Square3(~Square@user/square) Square
2026-04-13 17:03:52 +0000Square(~Square4@user/square) (Ping timeout: 244 seconds)
2026-04-13 17:12:49 +0000Xe(~Xe@perl/impostor/xe) (Quit: ZNC 1.10.1 - https://znc.in)
2026-04-13 17:14:47 +0000ft(~ft@p508db287.dip0.t-ipconnect.de) ft
2026-04-13 17:16:09 +0000Xe(~Xe@perl/impostor/xe) Xe
2026-04-13 17:18:33 +0000jmcantrell_(~weechat@user/jmcantrell) (Ping timeout: 248 seconds)
2026-04-13 17:37:03 +0000shapr(~user@130.44.148.32) shapr
2026-04-13 17:37:32 +0000 <shapr> Huh, channel got smaller.
2026-04-13 17:37:49 +0000 <shapr> maybe it's just the right size now?
2026-04-13 17:37:59 +0000 <shapr> Oh hey, can I run Haskell on my keyboard?
2026-04-13 17:42:42 +0000gmg(~user@user/gehmehgeh) (Quit: Leaving)
2026-04-13 17:42:59 +0000gmg(~user@user/gehmehgeh) gehmehgeh
2026-04-13 17:43:04 +0000 <shapr> How much OS do I need to run MicroHS? 🤔
2026-04-13 17:45:30 +0000jmcantrell_(~weechat@user/jmcantrell) jmcantrell
2026-04-13 17:45:44 +0000 <janus> i think the target shouldn't need much OS since you can easily remove POSIX ffi calls and such
2026-04-13 17:46:00 +0000 <janus> not sure whether you refer to host or target
2026-04-13 17:46:16 +0000 <shapr> It's a silly idea anyway.
2026-04-13 17:46:19 +0000 <shapr> Hello janus!
2026-04-13 17:46:25 +0000ChanServ+o janus
2026-04-13 17:46:29 +0000 <janus> hi shapr
2026-04-13 17:46:31 +0000 <shapr> you have THE POWER!
2026-04-13 17:46:40 +0000 <janus> oh my
2026-04-13 17:46:43 +0000 <Rembane> shapr: Please run Haskell on your keyboard!
2026-04-13 17:46:48 +0000 <Rembane> Hi! :D
2026-04-13 17:46:55 +0000ChanServ+o Rembane
2026-04-13 17:46:58 +0000 <shapr> hello Rembane!
2026-04-13 17:47:15 +0000 <shapr> Rembane: I don't think I have a keyboard powerful enough to run Haskell.
2026-04-13 17:47:28 +0000 <Rembane> shapr: Oh no! :(
2026-04-13 17:47:42 +0000 <shapr> I don't think I have a keyboard powerful enough to run Rust unless it's no_std rust.
2026-04-13 17:47:53 +0000 <shapr> Rembane: do you know of a keyboard powerful enough to run MicroHS?
2026-04-13 17:48:19 +0000 <janus> shapr: have you seen Dmitry Grinberg write a MIPS emulator for the Intel 4004 from 1971
2026-04-13 17:48:30 +0000 <janus> after waiting 5 days to boot linux, you can launch microhs
2026-04-13 17:48:36 +0000 <mauke> shapr: o/
2026-04-13 17:48:50 +0000 <Rembane> shapr: Hm... no, but it seems like janus does! :D
2026-04-13 17:48:56 +0000 <janus> so surely most keyboards can run microhs, since they probably have microcontrollers at least as powerful as the intel 4004
2026-04-13 17:49:34 +0000 <EvanR> I college programming 101, it was stated "the keyboard is a file". If you install haskell on your keyboard, what is it now. A function?
2026-04-13 17:49:49 +0000 <shapr> mauke: hello!
2026-04-13 17:50:15 +0000 <shapr> I think Haskell on Keyboard is a silly project idea.
2026-04-13 17:50:47 +0000 <mauke> why function keys if not functional programming?
2026-04-13 17:50:53 +0000 <shapr> oooh
2026-04-13 17:50:54 +0000 <shapr> good point!
2026-04-13 17:51:08 +0000 <shapr> We put the Funk in Funktionelle
2026-04-13 17:51:27 +0000 <EvanR> the keyboard is a function from Time to [Key]
2026-04-13 17:51:45 +0000 <EvanR> the well behavedness of this function can be debated
2026-04-13 17:55:21 +0000robobub(uid248673@id-248673.uxbridge.irccloud.com) robobub
2026-04-13 17:57:08 +0000dumptruckman(~dumptruck@45-79-134-140.ip.linodeusercontent.com) (Quit: ZNC - https://znc.in)
2026-04-13 17:57:56 +0000arandombit(~arandombi@2a02:2455:8656:7100:21e4:4567:22be:8bd9)
2026-04-13 17:57:56 +0000arandombit(~arandombi@2a02:2455:8656:7100:21e4:4567:22be:8bd9) (Changing host)
2026-04-13 17:57:56 +0000arandombit(~arandombi@user/arandombit) arandombit
2026-04-13 17:58:39 +0000 <gentauro> do we have multiple enum values in Haskell? F# -> `type [<Flags>] FooBar = Foo = 0 | Bar = 1 | Baz = 2 | Qux = 4`. let barQux = Bar ||| Qux`. Source: https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/enumerations#remarks
2026-04-13 17:59:30 +0000 <EvanR> > enumFromTo 0 1 :: [Bool]
2026-04-13 17:59:31 +0000 <lambdabot> No instance for ‘Num Bool’ arising from the literal ‘0’
2026-04-13 17:59:31 +0000 <lambdabot> In the first argument of ‘enumFromTo’, namely ‘0’
2026-04-13 17:59:31 +0000 <lambdabot> In the expression: enumFromTo 0 1 :: [Bool]
2026-04-13 17:59:46 +0000 <EvanR> > enumFromTo False True :: [Int]
2026-04-13 17:59:47 +0000 <lambdabot> Couldn't match expected type ‘Int’ with actual type ‘Bool’
2026-04-13 17:59:47 +0000 <lambdabot> In the second argument of ‘enumFromTo’, namely ‘True’
2026-04-13 17:59:47 +0000 <lambdabot> In the expression: enumFromTo False True :: [Int]Couldn't match expected typ...
2026-04-13 17:59:59 +0000 <EvanR> facepalm
2026-04-13 18:00:16 +0000 <EvanR> we have multiple enum values
2026-04-13 18:00:22 +0000 <mauke> gentauro: no
2026-04-13 18:00:24 +0000 <gentauro> EvanR: but that's a range right?
2026-04-13 18:00:35 +0000 <gentauro> Flags in F# is like powers of 2
2026-04-13 18:00:45 +0000 <EvanR> oh
2026-04-13 18:00:48 +0000 <gentauro> so by using the OR operator, you can store in a single enum field several values
2026-04-13 18:00:58 +0000 <EvanR> you can express that in haskell using pattern synonyms for powers of two
2026-04-13 18:01:25 +0000 <mauke> you can use an integer type (and bitwise or), or a set of enum values, or a record of bools
2026-04-13 18:01:28 +0000gentauroenums in F# are just sum-types with a numerical value
2026-04-13 18:02:04 +0000 <EvanR> .oO( what if you made the Enum instance use powers of two instead of sequential Ints )
2026-04-13 18:02:09 +0000 <gentauro> mauke: yeah, that's what the F# people do with a bit of syntactic sugar
2026-04-13 18:02:23 +0000 <janus> but you could do the same in haskell with code generation no?
2026-04-13 18:03:18 +0000 <gentauro> I perhaps spend a bit of time on it and make it right. Perhaps it could somehow end in `base`?
2026-04-13 18:03:42 +0000 <EvanR> :t (.|.)
2026-04-13 18:03:43 +0000 <lambdabot> Bits a => a -> a -> a
2026-04-13 18:03:48 +0000 <EvanR> bits class
2026-04-13 18:03:50 +0000 <gentauro> it's really useful to use. Ex: `let logger = Info | Debug | Warning`
2026-04-13 18:04:11 +0000dumptruckman(~dumptruck@172-104-5-126.ip.linodeusercontent.com)
2026-04-13 18:04:14 +0000 <gentauro> EvanR: got it
2026-04-13 18:04:45 +0000Milan_Vanca(~milan@user/Milan-Vanca:32634) (Quit: WeeChat 4.7.2)
2026-04-13 18:04:51 +0000 <janus> i think many see the Enum class as legacy? that might mean that many people refrain from trying to improve it
2026-04-13 18:04:59 +0000 <mauke> let logger = defaultLogger{ info = True, debug = True, warning = True }
2026-04-13 18:05:02 +0000gentaurodefine sum type. Derive `Bounded and Enum` (however Bounded needs to be powers of 2)
2026-04-13 18:05:09 +0000 <EvanR> Info .|. Debug .|. Warning, where these are pattern synonyms
2026-04-13 18:05:26 +0000 <EvanR> pattern Warning = 0x4
2026-04-13 18:06:06 +0000 <mauke> let info@debug@warning = True; logger = def{..}
2026-04-13 18:06:46 +0000r1bilski(~r1bilski@user/r1bilski) r1bilski
2026-04-13 18:07:10 +0000 <EvanR> yeah this is the "configuration monoid" pattern where the monoid op is OR
2026-04-13 18:07:30 +0000 <EvanR> and record inspection extracts the bits
2026-04-13 18:10:27 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-04-13 18:11:16 +0000 <janus> gentauro: have you seen Data.Bits.Ior?
2026-04-13 18:11:40 +0000 <janus> % import Data.Bits
2026-04-13 18:11:40 +0000 <yahb2> <no output>
2026-04-13 18:11:50 +0000 <janus> % getIor (Ior 0xab <> Ior 0x12) :: Word8
2026-04-13 18:11:50 +0000 <yahb2> <interactive>:13:34: error: [GHC-76037] ; Not in scope: type constructor or class ‘Word8’ ; Suggested fix: Perhaps use ‘Word’ (imported from Prelude)
2026-04-13 18:11:58 +0000 <janus> oh well, you get the idea
2026-04-13 18:12:36 +0000 <mauke> % getIor (0xab <> 0x12)
2026-04-13 18:12:36 +0000 <yahb2> <interactive>:15:1: error: [GHC-39999] ; • No instance for ‘Num (Ior Integer)’ arising from a use of ‘it’ ; • In the first argument of ‘Yahb2Defs.limitedPrint’, namely ‘it’ ; In a stm...
2026-04-13 18:12:41 +0000 <gentauro> janus: I think `Word8` now is `Internal` in `base` (as in `ghc-internal`
2026-04-13 18:13:07 +0000 <janus> it might be defined in something called Internal, but it then gets re-exported
2026-04-13 18:13:20 +0000 <janus> you can use it without issues, it's some secrit type
2026-04-13 18:13:25 +0000 <janus> *not some secrit
2026-04-13 18:14:43 +0000 <janus> gentauro: do you use JSON? it would be nice to have a mapping that could get emitted to OpenAPI
2026-04-13 18:15:48 +0000 <gentauro> % import Data.Word
2026-04-13 18:15:49 +0000 <yahb2> <no output>
2026-04-13 18:15:54 +0000 <gentauro> :i Word8
2026-04-13 18:15:58 +0000 <gentauro> % :i Word8
2026-04-13 18:15:58 +0000 <yahb2> type Word8 :: * ; data Word8 = GHC.Internal.Word.W8# GHC.Internal.Prim.Word8# ; -- Defined in ‘GHC.Internal.Word’ ; instance NFData Word8 -- Defined in ‘Control.DeepSeq’ ; instance Integral Word...
2026-04-13 18:16:12 +0000 <gentauro> oh yeah, it's still accessible
2026-04-13 18:16:47 +0000 <janus> yeah it's a great type. people should use sized words more.
2026-04-13 18:17:03 +0000 <janus> at my last job, we used Int everywhere because then ' it looked simpler'
2026-04-13 18:17:16 +0000 <janus> but the cost is correctness ...
2026-04-13 18:19:25 +0000 <janus> % getIor (Ior 0xab <> Ior 0x12) :: Word8
2026-04-13 18:19:25 +0000 <yahb2> 187
2026-04-13 18:20:18 +0000 <EvanR> as usual, Int is great as long as your math stays in the representable range
2026-04-13 18:20:41 +0000 <EvanR> which also applies to bitwise
2026-04-13 18:21:15 +0000 <gentauro> Int is `singed integer 32` while `Word` is `unsigned integer 32` right?
2026-04-13 18:21:21 +0000 <EvanR> not necessarily
2026-04-13 18:21:39 +0000 <janus> % maxBound :: Int
2026-04-13 18:21:39 +0000 <yahb2> 9223372036854775807
2026-04-13 18:21:51 +0000 <janus> % 0xffffffff
2026-04-13 18:21:51 +0000 <yahb2> 4294967295
2026-04-13 18:22:00 +0000 <EvanR> an (old?) spec gaurantees it has at least 29 bits
2026-04-13 18:22:42 +0000gentaurohmmm, INTeresting
2026-04-13 18:22:57 +0000 <EvanR> respectable desktop PC operators get 64 bits
2026-04-13 18:23:01 +0000arandombit(~arandombi@user/arandombit) (Ping timeout: 244 seconds)
2026-04-13 18:23:15 +0000Googulator26(~Googulato@94-21-172-213.pool.digikabel.hu)
2026-04-13 18:23:17 +0000 <janus> i think i would respect someone with a 32-bit machine more actually...
2026-04-13 18:23:25 +0000 <EvanR> o_O
2026-04-13 18:23:38 +0000 <janus> retrocomputing takes dedication
2026-04-13 18:23:50 +0000 <EvanR> lol
2026-04-13 18:26:52 +0000Googulator(~Googulato@94-21-172-213.pool.digikabel.hu) (Ping timeout: 245 seconds)
2026-04-13 18:29:07 +0000danishman(~danishman@85.82.118.246)
2026-04-13 18:29:11 +0000alter2000(~alter2000@user/alter2000) alter2000
2026-04-13 18:30:03 +0000mesaoptimizer(~user@user/PapuaHardyNet) (Quit: WeeChat 4.7.1)
2026-04-13 18:30:26 +0000mesaoptimizer(~user@user/PapuaHardyNet) PapuaHardyNet
2026-04-13 18:33:55 +0000r1bilski(~r1bilski@user/r1bilski) (Read error: Connection reset by peer)
2026-04-13 18:37:21 +0000Ekho(~Ekho@user/ekho) (Quit: CORE ERROR, SYSTEM HALTED.)
2026-04-13 18:37:32 +0000gentaurohmmm, INTeresting
2026-04-13 18:37:35 +0000 <gentauro> ups
2026-04-13 18:38:26 +0000Ekho(~Ekho@user/ekho) Ekho
2026-04-13 18:38:43 +0000danishman(~danishman@85.82.118.246) (Quit: Leaving)
2026-04-13 18:39:12 +0000 <mauke> > maxBound :: Word
2026-04-13 18:39:13 +0000 <lambdabot> 18446744073709551615
2026-04-13 18:42:13 +0000polykernel_(~polykerne@user/polykernel) polykernel
2026-04-13 18:44:37 +0000polykernel(~polykerne@user/polykernel) (Ping timeout: 244 seconds)
2026-04-13 18:44:37 +0000polykernel_polykernel
2026-04-13 18:46:16 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 18:49:57 +0000potatomuncher|2(~kvirc@user/potatomuncher) (Ping timeout: 255 seconds)
2026-04-13 18:50:55 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-04-13 18:51:24 +0000srazkvt(~sarah@user/srazkvt) (Quit: Konversation terminated!)
2026-04-13 19:01:39 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 19:03:19 +0000peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 244 seconds)
2026-04-13 19:08:29 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-04-13 19:08:32 +0000puke(~puke@user/puke) puke
2026-04-13 19:10:37 +0000machinedgod(~machinedg@d172-219-48-230.abhsia.telus.net) (Ping timeout: 276 seconds)
2026-04-13 19:15:25 +0000arandombit(~arandombi@user/arandombit) arandombit
2026-04-13 19:16:06 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 19:20:43 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-04-13 19:28:39 +0000raelie(~raelie@2a06:5904:11c4:b000:b8f0:5ffe:f82d:793e)
2026-04-13 19:28:39 +0000raelie(~raelie@2a06:5904:11c4:b000:b8f0:5ffe:f82d:793e) (Changing host)
2026-04-13 19:28:39 +0000raelie(~raelie@user/raelie) raelie
2026-04-13 19:30:56 +0000elarks(~elarks@user/yerrii) (Quit: WeeChat 4.7.1)
2026-04-13 19:31:29 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 19:31:57 +0000m(~travltux@user/travltux) travltux
2026-04-13 19:36:42 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-04-13 19:40:03 +0000pavonia(~user@user/siracusa) siracusa
2026-04-13 19:43:43 +0000elarks(~elarks@user/yerrii) yerrii
2026-04-13 19:44:01 +0000sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2026-04-13 19:47:16 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-04-13 19:51:59 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-04-13 19:52:53 +0000 <yin> why does my .ghci permissions keep changing? i swear i'm not touching the file
2026-04-13 19:53:27 +0000 <yin> every few weeks this happens and i'm yet to find the culprit