Home liberachat/#haskell: Logs Calendar

Logs on 2024-12-09 (liberachat/#haskell)

00:01:48 rekahsoft joins (~rekahsoft@76.69.85.220)
00:02:16 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:d1ed:58ec:2cd9:cd3c)
00:04:19 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:d1ed:58ec:2cd9:cd3c) (Read error: Connection reset by peer)
00:10:24 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
00:12:06 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:d1ed:58ec:2cd9:cd3c)
00:15:03 × sprotte24 quits (~sprotte24@p200300d16f24a7000c2549cd7d1c6472.dip0.t-ipconnect.de) (Quit: Leaving)
00:16:58 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:d1ed:58ec:2cd9:cd3c) (Read error: Connection reset by peer)
00:17:09 × Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
00:17:21 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
00:18:42 vanishing joins (~vanishing@user/vanishingideal)
00:20:33 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:d1ed:58ec:2cd9:cd3c)
00:20:37 × acidjnk_new quits (~acidjnk@p200300d6e7283f68cd5d354d221d3a3f.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
00:21:07 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 265 seconds)
00:21:07 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:d1ed:58ec:2cd9:cd3c) (Read error: Connection reset by peer)
00:22:42 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
00:24:29 housemate joins (~housemate@ppp203-122-213-191.static.internode.on.net)
00:25:20 × housemate quits (~housemate@ppp203-122-213-191.static.internode.on.net) (Max SendQ exceeded)
00:25:54 × xff0x quits (~xff0x@2405:6580:b080:900:8893:ef7:6a2e:2b23) (Ping timeout: 276 seconds)
00:26:09 housemate joins (~housemate@ppp203-122-213-191.static.internode.on.net)
00:31:50 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:d1ed:58ec:2cd9:cd3c)
00:33:34 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
00:34:08 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:d1ed:58ec:2cd9:cd3c) (Read error: Connection reset by peer)
00:38:30 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
00:43:55 × troojg quits (~troojg@user/troojg) (Remote host closed the connection)
00:44:20 troojg joins (~troojg@user/troojg)
00:48:59 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
00:53:41 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
00:57:20 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:d1ed:58ec:2cd9:cd3c)
01:00:21 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:d1ed:58ec:2cd9:cd3c) (Read error: Connection reset by peer)
01:04:21 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
01:04:24 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 264 seconds)
01:04:45 × housemate quits (~housemate@ppp203-122-213-191.static.internode.on.net) (Remote host closed the connection)
01:05:00 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 264 seconds)
01:06:52 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:d1ed:58ec:2cd9:cd3c)
01:08:51 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
01:12:21 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:d1ed:58ec:2cd9:cd3c) (Remote host closed the connection)
01:12:29 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:d1ed:58ec:2cd9:cd3c)
01:14:17 stiell joins (~stiell@gateway/tor-sasl/stiell)
01:19:43 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
01:23:32 xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
01:24:21 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
01:24:56 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:d1ed:58ec:2cd9:cd3c) (Remote host closed the connection)
01:25:03 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:d1ed:58ec:2cd9:cd3c)
01:27:07 housemate joins (~housemate@ppp203-122-213-191.static.internode.on.net)
01:35:05 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
01:36:54 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
01:39:42 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
01:45:24 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:d1ed:58ec:2cd9:cd3c) (Ping timeout: 260 seconds)
01:45:55 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:8ebe:8e8b:1f35:b2c0)
01:48:36 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:8ebe:8e8b:1f35:b2c0) (Read error: Connection reset by peer)
01:48:49 × housemate quits (~housemate@ppp203-122-213-191.static.internode.on.net) (Quit: Nothing to see here. I wasn't there. https://files.catbox.moe/4yru45.pdf)
01:49:36 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:8ebe:8e8b:1f35:b2c0)
01:50:28 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
01:54:09 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:8ebe:8e8b:1f35:b2c0) (Ping timeout: 260 seconds)
01:54:50 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
02:05:51 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
02:10:31 × CrunchyFlakes quits (~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
02:11:03 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
02:12:37 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
02:13:08 CrunchyFlakes joins (~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de)
02:16:27 nucleus joins (~grigory@77-174-131-220.fixed.kpn.net)
02:20:46 × nucleus quits (~grigory@77-174-131-220.fixed.kpn.net) (Ping timeout: 252 seconds)
02:23:54 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
02:25:21 JeremyB99 joins (~JeremyB99@dhcp-251-168.resnet.purdue.edu)
02:28:12 × JeremyB99 quits (~JeremyB99@dhcp-251-168.resnet.purdue.edu) (Read error: Connection reset by peer)
02:28:45 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
02:28:56 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds)
02:39:16 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
02:43:55 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
02:46:30 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649)
02:47:59 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649) (Read error: Connection reset by peer)
02:54:39 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
02:57:07 × ski quits (~ski@remote11.chalmers.se) (Remote host closed the connection)
02:59:16 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
03:02:51 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649)
03:04:37 × JamesMowery439 quits (~JamesMowe@ip68-228-212-232.ph.ph.cox.net) (Quit: Ping timeout (120 seconds))
03:06:06 × kadobanana quits (~mud@user/kadoban) (Remote host closed the connection)
03:06:40 kadobanana joins (~mud@user/kadoban)
03:07:14 JamesMowery439 joins (~JamesMowe@ip68-228-212-232.ph.ph.cox.net)
03:10:02 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
03:14:12 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649) (Read error: Connection reset by peer)
03:14:50 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
03:19:44 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649)
03:19:57 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649) (Read error: Connection reset by peer)
03:25:25 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
03:26:52 × rekahsoft quits (~rekahsoft@76.69.85.220) (Remote host closed the connection)
03:29:15 rekahsoft joins (~rekahsoft@76.69.85.220)
03:29:49 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
03:32:56 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649)
03:33:32 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649) (Read error: Connection reset by peer)
03:36:45 housemate joins (~housemate@ppp203-122-213-191.static.internode.on.net)
03:40:47 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
03:44:07 matsurago joins (~matsurago@240b:10:b701:8b00:7bc3:8f18:3c0f:757f)
03:45:26 × homo quits (~homo@user/homo) (Quit: homo)
03:47:29 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
03:48:55 homo joins (~homo@82-128-196-26.bb.dnainternet.fi)
03:49:15 × homo quits (~homo@82-128-196-26.bb.dnainternet.fi) (Changing host)
03:49:15 homo joins (~homo@user/homo)
03:54:38 yangby joins (~secret@115.196.174.150)
03:55:31 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649)
03:57:33 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649) (Read error: Connection reset by peer)
03:58:19 × rekahsoft quits (~rekahsoft@76.69.85.220) (Ping timeout: 244 seconds)
03:58:43 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
03:58:57 × td_ quits (~td@i5387090F.versanet.de) (Ping timeout: 252 seconds)
03:58:59 × troojg quits (~troojg@user/troojg) (Ping timeout: 260 seconds)
03:59:26 gorignak joins (~gorignak@user/gorignak)
04:00:39 td_ joins (~td@i5387091A.versanet.de)
04:02:58 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
04:03:48 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
04:06:06 × OftenFaded quits (~OftenFade@user/tisktisk) (Quit: Client closed)
04:12:11 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649)
04:14:05 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
04:15:16 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649) (Read error: Connection reset by peer)
04:19:00 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
04:20:27 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649)
04:21:51 falafel joins (~falafel@2603:8000:b4f0:62a0:6544:3286:244f:f14)
04:24:34 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649) (Read error: Connection reset by peer)
04:29:28 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
04:31:51 × housemate quits (~housemate@ppp203-122-213-191.static.internode.on.net) (Quit: Nothing to see here. I wasn't there. https://files.catbox.moe/4yru45.pdf)
04:32:54 × machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 276 seconds)
04:33:58 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
04:37:01 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649)
04:39:42 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649) (Read error: Connection reset by peer)
04:44:50 ephilalethes joins (~noumenon@2001:fb1:4b:b8b7:aa7e:eaff:fede:ff94)
04:44:50 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
04:47:53 troydm joins (~troydm@user/troydm)
04:49:25 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
04:50:05 housemate joins (~housemate@ppp203-122-213-191.static.internode.on.net)
04:55:35 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
04:56:24 korrykatti joins (~korrykatt@user/korrykatti)
04:58:00 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649)
04:59:47 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649) (Read error: Connection reset by peer)
05:00:14 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
05:00:18 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649)
05:04:49 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
05:06:17 ski joins (~ski@remote11.chalmers.se)
05:15:29 × alp quits (~alp@2001:861:8ca0:4940:b657:7732:c16b:433f) (Ping timeout: 248 seconds)
05:15:37 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
05:15:41 × housemate quits (~housemate@ppp203-122-213-191.static.internode.on.net) (Quit: Nothing to see here. I wasn't there. https://files.catbox.moe/4yru45.pdf)
05:20:21 alp joins (~alp@2001:861:8ca0:4940:d753:e5aa:d992:f61)
05:22:18 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
05:23:54 housemate joins (~housemate@ppp203-122-213-191.static.internode.on.net)
05:29:25 Sgeo_ joins (~Sgeo@user/sgeo)
05:31:59 × housemate quits (~housemate@ppp203-122-213-191.static.internode.on.net) (Quit: Nothing to see here. I wasn't there. https://files.catbox.moe/4yru45.pdf)
05:32:29 × Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 245 seconds)
05:34:49 michalz joins (~michalz@185.246.207.201)
05:38:44 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
05:43:12 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
05:54:07 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
05:57:23 Smiles joins (uid551636@id-551636.lymington.irccloud.com)
05:58:33 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
05:59:14 machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net)
05:59:17 × vanishing quits (~vanishing@user/vanishingideal) (Ping timeout: 248 seconds)
06:01:00 vanishingideal joins (~vanishing@user/vanishingideal)
06:09:12 × falafel quits (~falafel@2603:8000:b4f0:62a0:6544:3286:244f:f14) (Ping timeout: 246 seconds)
06:14:51 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
06:19:45 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
06:22:54 Square2 joins (~Square4@user/square)
06:23:53 CiaoSen joins (~Jura@2a05:5800:2c8:700:ca4b:d6ff:fec1:99da)
06:24:21 × ephilalethes quits (~noumenon@2001:fb1:4b:b8b7:aa7e:eaff:fede:ff94) (Ping timeout: 248 seconds)
06:30:15 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
06:30:35 × korrykatti quits (~korrykatt@user/korrykatti) (Remote host closed the connection)
06:30:56 × matsurago quits (~matsurago@240b:10:b701:8b00:7bc3:8f18:3c0f:757f) (Quit: Leaving)
06:32:11 nucleus joins (~grigory@77-174-131-220.fixed.kpn.net)
06:35:12 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
06:35:40 korrykatti joins (~korrykatt@user/korrykatti)
06:36:45 ephilalethes joins (~noumenon@2001:fb1:4b:b8b7:aa7e:eaff:fede:ff94)
06:37:22 × korrykatti quits (~korrykatt@user/korrykatti) (Remote host closed the connection)
06:39:49 × alp quits (~alp@2001:861:8ca0:4940:d753:e5aa:d992:f61) (Ping timeout: 248 seconds)
06:41:09 housemate joins (~housemate@ppp203-122-213-191.static.internode.on.net)
06:41:54 × housemate quits (~housemate@ppp203-122-213-191.static.internode.on.net) (Max SendQ exceeded)
06:42:51 housemate joins (~housemate@ppp203-122-213-191.static.internode.on.net)
06:45:38 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
06:49:51 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
06:50:04 oneeyedalien joins (~oneeyedal@user/oneeyedalien)
06:54:21 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 246 seconds)
06:56:33 acidjnk_new joins (~acidjnk@p200300d6e7283f551932c6ca42eccac0.dip0.t-ipconnect.de)
07:00:43 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
07:01:33 vanishingideal joins (~vanishing@user/vanishingideal)
07:05:24 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
07:05:31 × Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:09:17 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
07:13:59 × housemate quits (~housemate@ppp203-122-213-191.static.internode.on.net) (Quit: Nothing to see here. I wasn't there. https://files.catbox.moe/4yru45.pdf)
07:15:09 gentauro joins (~gentauro@user/gentauro)
07:16:15 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
07:21:08 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
07:25:18 × AlexZenon quits (~alzenon@5.139.233.0) (Read error: Connection reset by peer)
07:25:35 AlexZenon joins (~alzenon@5.139.233.0)
07:31:38 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
07:32:53 korrykatti joins (~korrykatt@user/korrykatti)
07:34:48 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds)
07:35:50 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
07:47:01 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
07:47:21 × ft quits (~ft@p508db9c7.dip0.t-ipconnect.de) (Quit: leaving)
07:51:20 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
07:56:34 × vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 252 seconds)
07:58:32 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:59:18 × korrykatti quits (~korrykatt@user/korrykatti) (Remote host closed the connection)
08:00:01 × caconym quits (~caconym@user/caconym) (Quit: bye)
08:00:16 × pja quits (~pja@2a02:8010:6098:0:e65f:1ff:fe1f:660f) (Read error: Connection reset by peer)
08:00:40 caconym joins (~caconym@user/caconym)
08:01:42 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
08:04:48 pja joins (~pja@2a02:8010:6098:0:e65f:1ff:fe1f:660f)
08:07:15 × pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer)
08:08:22 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
08:10:07 pavonia joins (~user@user/siracusa)
08:19:16 × acidjnk_new quits (~acidjnk@p200300d6e7283f551932c6ca42eccac0.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
08:19:45 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
08:22:21 × oneeyedalien quits (~oneeyedal@user/oneeyedalien) (Ping timeout: 276 seconds)
08:24:35 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
08:28:17 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:29:32 alp joins (~alp@2001:861:8ca0:4940:868:4c34:dd09:140b)
08:30:29 × homo quits (~homo@user/homo) (Quit: homo)
08:35:25 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
08:37:20 × pavonia quits (~user@user/siracusa) (Ping timeout: 252 seconds)
08:43:56 pavonia joins (~user@user/siracusa)
08:45:43 briandaed joins (~root@user/briandaed)
08:48:27 × pavonia quits (~user@user/siracusa) (Ping timeout: 246 seconds)
08:48:46 × tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
08:55:52 pavonia joins (~user@user/siracusa)
08:58:50 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
09:01:41 × pavonia quits (~user@user/siracusa) (Ping timeout: 248 seconds)
09:03:11 pavonia joins (~user@user/siracusa)
09:04:48 housemate joins (~housemate@2405:6e00:243a:cde6:f85f:14ad:315:6876)
09:06:35 × CiaoSen quits (~Jura@2a05:5800:2c8:700:ca4b:d6ff:fec1:99da) (Ping timeout: 260 seconds)
09:07:48 × pavonia quits (~user@user/siracusa) (Ping timeout: 244 seconds)
09:07:57 merijn joins (~merijn@77.242.116.146)
09:08:36 pavonia joins (~user@user/siracusa)
09:09:15 oneeyedalien joins (~oneeyedal@user/oneeyedalien)
09:11:30 × dpratt quits (~dpratt@165.225.220.148) (Quit: Client closed)
09:15:26 sord937 joins (~sord937@gateway/tor-sasl/sord937)
09:25:22 × pavonia quits (~user@user/siracusa) (Ping timeout: 252 seconds)
09:25:57 × housemate quits (~housemate@2405:6e00:243a:cde6:f85f:14ad:315:6876) (Read error: Connection reset by peer)
09:26:41 takuan joins (~takuan@178-116-218-225.access.telenet.be)
09:27:32 housemate joins (~housemate@2405:6e00:243a:cde6:ebfb:7a90:e12b:25f7)
09:28:18 acidjnk_new joins (~acidjnk@p200300d6e7283f551932c6ca42eccac0.dip0.t-ipconnect.de)
09:28:23 <ncf> i don't think i like that terminology
09:28:38 <ncf> "mutually right adjoint" sounds like an ambidextrous adjunction to me
09:30:42 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
09:31:08 × housemate quits (~housemate@2405:6e00:243a:cde6:ebfb:7a90:e12b:25f7) (Max SendQ exceeded)
09:32:27 housemate joins (~housemate@2405:6e00:243a:cde6:ebfb:7a90:e12b:25f7)
09:33:38 × xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 244 seconds)
09:36:33 × Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
09:40:21 pavonia joins (~user@user/siracusa)
09:41:15 × oneeyedalien quits (~oneeyedal@user/oneeyedalien) (Quit: Leaving)
09:42:20 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Read error: Connection reset by peer)
09:44:04 × merijn quits (~merijn@77.242.116.146) (Ping timeout: 252 seconds)
09:45:07 merijn joins (~merijn@77.242.116.146)
09:49:08 ljdarj joins (~Thunderbi@user/ljdarj)
09:54:07 × merijn quits (~merijn@77.242.116.146) (Ping timeout: 264 seconds)
09:54:53 merijn joins (~merijn@77.242.116.146)
10:00:43 × housemate quits (~housemate@2405:6e00:243a:cde6:ebfb:7a90:e12b:25f7) (Quit: Nothing to see here. I wasn't there. https://files.catbox.moe/4yru45.pdf)
10:07:59 lxsameer joins (~lxsameer@Serene/lxsameer)
10:09:23 jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
10:30:23 housemate joins (~housemate@2405:6e00:243a:cde6:8efb:b06a:130a:9e2e)
10:32:50 xff0x joins (~xff0x@2405:6580:b080:900:23ee:dfe8:3f69:3c79)
10:44:00 × chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 264 seconds)
10:44:08 ash3en joins (~Thunderbi@89.246.174.164)
10:45:48 chiselfuse joins (~chiselfus@user/chiselfuse)
10:47:08 × ash3en quits (~Thunderbi@89.246.174.164) (Client Quit)
10:51:11 Smiles joins (uid551636@id-551636.lymington.irccloud.com)
10:56:01 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2)
10:58:44 __monty__ joins (~toonn@user/toonn)
11:07:01 × troydm quits (~troydm@user/troydm) (Ping timeout: 248 seconds)
11:07:14 leif joins (~leif@210.54.33.112)
11:10:23 × housemate quits (~housemate@2405:6e00:243a:cde6:8efb:b06a:130a:9e2e) (Quit: Nothing to see here. I wasn't there. https://files.catbox.moe/4yru45.pdf)
11:16:33 × merijn quits (~merijn@77.242.116.146) (Ping timeout: 276 seconds)
11:20:04 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds)
11:23:24 CiaoSen joins (~Jura@2a05:5800:2c8:700:ca4b:d6ff:fec1:99da)
11:30:25 merijn joins (~merijn@77.242.116.146)
11:31:14 JuanDaugherty joins (~juan@user/JuanDaugherty)
11:38:23 × rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer)
11:39:00 rvalue joins (~rvalue@user/rvalue)
12:00:25 wootehfoot joins (~wootehfoo@user/wootehfoot)
12:03:07 mari-estel joins (~mari-este@user/mari-estel)
12:06:14 zeshbtc joins (~zeshbtc@103.166.150.118)
12:06:48 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:280d:d34:e20d:649) (Read error: Connection reset by peer)
12:07:21 comerijn joins (~merijn@77.242.116.146)
12:09:59 × merijn quits (~merijn@77.242.116.146) (Ping timeout: 252 seconds)
12:18:06 yosef` joins (~yosef`@user/dostoevsky)
12:18:35 × yosef` quits (~yosef`@user/dostoevsky) (Max SendQ exceeded)
12:19:20 dostoevsky joins (~dostoevsk@user/dostoevsky)
12:19:35 × zeshbtc quits (~zeshbtc@103.166.150.118) (Quit: Client closed)
12:19:39 × dostoevsky quits (~dostoevsk@user/dostoevsky) (Max SendQ exceeded)
12:19:52 yisef joins (~yisef@122.10.198.51)
12:20:29 dostoevsky joins (~dostoevsk@user/dostoevsky)
12:20:51 × dostoevsky quits (~dostoevsk@user/dostoevsky) (Max SendQ exceeded)
12:21:58 dostoevsky joins (~dostoevsk@user/dostoevsky)
12:22:03 × dostoevsky quits (~dostoevsk@user/dostoevsky) (Client Quit)
12:22:59 × notzmv quits (~umar@user/notzmv) (Ping timeout: 260 seconds)
12:23:46 × yisef quits (~yisef@122.10.198.51) (Client Quit)
12:24:11 × gentauro quits (~gentauro@user/gentauro) (Ping timeout: 265 seconds)
12:29:50 ystael joins (~ystael@user/ystael)
12:30:50 gentauro joins (~gentauro@user/gentauro)
12:35:03 × spenat quits (~spenat@c-92-35-37-17.bbcust.telenor.se) (Read error: Connection reset by peer)
12:35:46 housemate joins (~housemate@2405:6e00:243a:cde6:f639:9062:73b7:e5f1)
12:38:09 dostoevsky joins (~dostoevsk@user/dostoevsky)
12:38:21 × dostoevsky quits (~dostoevsk@user/dostoevsky) (Max SendQ exceeded)
12:38:56 dostoevsky joins (~dostoevsk@user/dostoevsky)
12:39:23 × dostoevsky quits (~dostoevsk@user/dostoevsky) (Max SendQ exceeded)
12:40:16 spenat joins (~spenat@c-92-35-37-17.bbcust.telenor.se)
12:40:36 dostoevsky joins (~dostoevsk@user/dostoevsky)
12:47:09 zeshbtc joins (~zeshbtc@103.166.150.118)
12:50:47 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
12:51:40 × zeshbtc quits (~zeshbtc@103.166.150.118) (Ping timeout: 240 seconds)
12:52:39 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
12:59:34 × housemate quits (~housemate@2405:6e00:243a:cde6:f639:9062:73b7:e5f1) (Read error: Connection reset by peer)
13:07:57 × mari-estel quits (~mari-este@user/mari-estel) (Quit: lunch time)
13:08:21 SlackCoder joins (~SlackCode@208.26.67.43)
13:09:36 × SlackCoder quits (~SlackCode@208.26.67.43) (Remote host closed the connection)
13:10:01 SlackCoder joins (~SlackCode@208.26.67.43)
13:12:06 × SlackCoder quits (~SlackCode@208.26.67.43) (Remote host closed the connection)
13:12:30 SlackCoder joins (~SlackCode@208.26.67.43)
13:13:36 × SlackCoder quits (~SlackCode@208.26.67.43) (Remote host closed the connection)
13:14:03 SlackCoder joins (~SlackCode@208.26.67.43)
13:27:12 × nucleus quits (~grigory@77-174-131-220.fixed.kpn.net) (Remote host closed the connection)
13:28:10 × mange quits (~user@user/mange) (Quit: Zzz...)
13:29:03 × tnt1 quits (~Thunderbi@user/tnt1) (Remote host closed the connection)
13:39:03 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
13:47:27 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
13:49:23 × comerijn quits (~merijn@77.242.116.146) (Ping timeout: 244 seconds)
13:49:38 ash3en joins (~Thunderbi@89.246.174.164)
13:51:15 × ash3en quits (~Thunderbi@89.246.174.164) (Client Quit)
13:51:40 mari-estel joins (~mari-este@user/mari-estel)
13:55:11 weary-traveler joins (~user@user/user363627)
13:55:29 rekahsoft joins (~rekahsoft@76.69.85.220)
13:59:59 merijn joins (~merijn@77.242.116.146)
14:02:43 nucleus joins (~grigory@77-174-131-220.fixed.kpn.net)
14:08:50 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:12:29 × CiaoSen quits (~Jura@2a05:5800:2c8:700:ca4b:d6ff:fec1:99da) (Ping timeout: 245 seconds)
14:25:30 × dostoevsky quits (~dostoevsk@user/dostoevsky) (Quit: dostoevsky)
14:29:39 comerijn joins (~merijn@77.242.116.146)
14:32:16 × merijn quits (~merijn@77.242.116.146) (Ping timeout: 244 seconds)
14:32:16 × machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 244 seconds)
14:34:36 ash3en joins (~Thunderbi@89.246.174.164)
14:41:03 × ash3en quits (~Thunderbi@89.246.174.164) (Ping timeout: 244 seconds)
14:46:09 × SlackCoder quits (~SlackCode@208.26.67.43) (Remote host closed the connection)
14:50:31 myxos joins (~myxos@syn-065-028-251-121.res.spectrum.com)
14:53:02 × mari-estel quits (~mari-este@user/mari-estel) (Quit: on the move)
15:01:12 × acidjnk_new quits (~acidjnk@p200300d6e7283f551932c6ca42eccac0.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
15:05:38 JuanDaugherty joins (~juan@user/JuanDaugherty)
15:08:33 hiecaq joins (~hiecaq@user/hiecaq)
15:09:59 billchenchina joins (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe)
15:12:14 × billchenchina quits (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Client Quit)
15:13:59 billchenchina joins (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe)
15:17:13 × comerijn quits (~merijn@77.242.116.146) (Ping timeout: 244 seconds)
15:17:13 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:19:41 merijn joins (~merijn@77.242.116.146)
15:20:30 × youthlic quits (~Thunderbi@user/youthlic) (Quit: youthlic)
15:22:24 youthlic joins (~Thunderbi@user/youthlic)
15:24:15 acidjnk_new joins (~acidjnk@p200300d6e7283f552879c496916057ac.dip0.t-ipconnect.de)
15:25:00 × alp quits (~alp@2001:861:8ca0:4940:868:4c34:dd09:140b) (Ping timeout: 246 seconds)
15:26:33 × Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
15:31:07 mari-estel joins (~mari-este@user/mari-estel)
15:33:48 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 264 seconds)
15:35:44 Sgeo joins (~Sgeo@user/sgeo)
15:46:28 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:46:47 sprotte24 joins (~sprotte24@p200300d16f2d2100180c9c45abd3e2c7.dip0.t-ipconnect.de)
15:49:24 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:54:56 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2)
16:02:17 <hellwolf> k r (f a) ≅ f (k r a) <-- does this look like anything known?
16:02:54 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
16:03:09 <hellwolf> k r (m a) ≅ m (k r a). perhaps "m" is more idiomatic here.
16:06:06 <geekosaur> not per se, although it's close to sequence/sequenceA
16:06:56 <hellwolf> > :t sequence
16:06:58 <lambdabot> <hint>:1:1: error: parse error on input ‘:’
16:07:08 <hellwolf> > t sequence
16:07:10 <lambdabot> error:
16:07:10 <lambdabot> • Couldn't match expected type ‘(t0 (m0 a0) -> m0 (t0 a0)) -> t’
16:07:10 <lambdabot> with actual type ‘Expr’
16:07:11 <geekosaur> :t sequence
16:07:12 <lambdabot> (Traversable t, Monad m) => t (m a) -> m (t a)
16:07:37 <hellwolf> :t let t = k r in k r (m a) ≅ m (k r a)
16:07:38 <lambdabot> error:
16:07:38 <lambdabot> • Couldn't match expected type ‘Expr -> t4’ with actual type ‘Expr’
16:07:38 <lambdabot> • The function ‘k’ is applied to one argument,
16:07:51 <geekosaur> sadly, associativity means you can't simply unify t with k r
16:08:05 <mari-estel> easier with a lambda hellwolf
16:08:50 <mari-estel> :t \ k r (m a) -> m (k r a)
16:08:51 <lambdabot> error: Parse error in pattern: m
16:08:51 <hellwolf> but that's correct it is the same as: t (m a) ≅ m (t a) where t = k r
16:09:36 <geekosaur> mm, actually, yes, I was thinking of the wrong side
16:09:40 <geekosaur> it should unify
16:09:56 <hellwolf> But I don't think I can have m as Monad, that seems very strong condition... let me think a bit
16:10:17 <geekosaur> sequenceA uses Applicative instead
16:10:24 <geekosaur> sequence is legacy these days
16:10:46 <geekosaur> :t sequenceA
16:10:48 <lambdabot> (Traversable t, Applicative f) => t (f a) -> f (t a)
16:11:04 <geekosaur> note that you do need at least Applicative for this to work
16:11:08 <hellwolf> yummy. that starts to look like something.
16:13:53 <hellwolf> So, I need to implement the sequenceA or traverse function where f must be an applicative.
16:13:57 <hellwolf> :t traverse
16:13:57 <lambdabot> (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
16:14:14 <merijn> :t traverse_
16:14:15 <lambdabot> (Foldable t, Applicative f) => (a -> f b) -> t a -> f ()
16:18:11 × nucleus quits (~grigory@77-174-131-220.fixed.kpn.net) (Ping timeout: 244 seconds)
16:18:12 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
16:18:13 <geekosaur> note that, historically, traverse was mapM which was `mapM f xs = sequence (map f xs)`
16:19:10 <geekosaur> the reformulation in terms of traverse and sequenceA kinda inverted things a bit
16:23:00 EvanR joins (~EvanR@user/evanr)
16:25:39 ski idly wonders what hellwolf is trying to do
16:28:41 <EvanR> the last thing in my logs was about the package safeint, which is intended to crash if the arithmetic overflows or underflows
16:28:54 <EvanR> now that's my kind of "safe"
16:29:36 <EvanR> safe in godot game engine is "don't let the game engine ever crash no matter what happens"
16:29:47 <EvanR> the exact opposite
16:30:31 × hiecaq quits (~hiecaq@user/hiecaq) (Quit: ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.0.92))
16:31:46 <mari-estel> well if no static checks are available, in general one does not want any program to crash at runtime
16:31:49 <haskellbridge> <hellwolf> ski, I will be back at explaining, fixing ether cable atm
16:31:53 <haskellbridge> <hellwolf> nightmare entanglement in the office of these cables
16:33:09 <merijn> EvanR: I mean, it makes sense that (in a game engine) your prime-directive is "do not crash the user's game" :)
16:33:40 <merijn> EvanR: There's always fun confusion with the meaning of safe/unsafe in FFI imports too :p
16:33:58 <EvanR> different objectives makes sense, calling all them "safe" even if contradictory is annoying
16:34:09 <merijn> Where people sometimes interpret "unsafe" as "foreign import something unsafe" as opposed to "unsafely import something foreign" :p
16:34:32 Smiles joins (uid551636@id-551636.lymington.irccloud.com)
16:34:45 SlackCoder joins (~SlackCode@64-94-63-8.ip.weststar.net.ky)
16:34:57 <c_wraith> the thing about godot is that not crashing often implies filling your hard drive with gigabytes of error logs...
16:37:43 × ephilalethes quits (~noumenon@2001:fb1:4b:b8b7:aa7e:eaff:fede:ff94) (Quit: Leaving)
16:38:13 <EvanR> if you have something that traditionally leads to a crash, like division by zero, it takes the liberty of yielding null instead. What could go wrong next
16:38:30 <EvanR> not crashing so it's fine!
16:39:48 × mari-estel quits (~mari-este@user/mari-estel) (Quit: cheers)
16:39:58 <int-e> . o O ( s/null/this_is_fine/g )
16:41:51 <EvanR> is advent of code still going string in here
16:41:56 <EvanR> by string I mean strong
16:44:17 housemate joins (~housemate@2405:6e00:243a:cde6:f749:6d8f:e7af:7805)
16:45:01 <hellwolf> sequenceA seems more fitting for what I need here. If I restate with my k, which is a category, r ↝ f a is a morphism from r to "f a" in the category of k. Hence, I can rewrite it to: r ↝ (f a) ≅ f (r ↝ a), this is in the shape and form for what I need, but it is also the same as sequenceA if I squint my eyes at it.
16:45:32 <int-e> EvanR: it's less of a topic than previous years
16:45:44 <EvanR> bummer
16:46:43 <hellwolf> And, more importantly, that's how I will implement my pattern matching for this category, as an example, say f is Maybe:
16:46:43 <hellwolf> pat :: r ↝ Maybe a ≅ Maybe (r ↝ a), that "pat" function is just an alias for sequenceA, it turns out ...
16:46:54 <int-e> but there's 41 people on glguy's leaderboard that have all stars (or 25 people if you include today)
16:47:04 <int-e> it's not dead :P
16:47:20 <sprout> thank you
16:47:33 <glguy> EvanR: I think we used have more discussion in this channel in the years when #adventofcode didn't exist
16:48:05 <glguy> A lot of the Haskell AoC discussion moved over
16:48:15 <hellwolf> And I also vaguely remember and assume, that all simple ADT (perhaps not GADT) are automatically an applicative, so I kinda have it for free for all ADTs.
16:48:41 <hellwolf> or maybe that's wrong, I think trees are not. But it doesn't matter too much to me.
16:48:57 <EvanR> really, #adventofcode had a lot of not haskell last times, and I'm always in the habit of never bringing up haskell outside this channel for fear of being ridiculed xD
16:48:59 <hellwolf> It's good enough an observation for me to work on.
16:49:37 <hellwolf> > for fear of being ridiculed
16:49:37 <hellwolf> Is "Haskell" the "Trump" word in programming circle... :p
16:49:38 <lambdabot> <hint>:1:10: error: parse error on input ‘of’
16:50:03 EvanR ridicules hellwolf
16:50:13 <sprout> haskell is brat
16:50:26 <EvanR> bratwinter is coming
16:51:26 <glguy> EvanR: Well my experience is that it's safe to talk about it there, but also I'd happily talk to you about it here :)
16:52:07 <EvanR> it would probably be a good way to juice up the old brain
16:52:44 <EvanR> not for solving the puzzles but remembering how to run the build systems and git repos xD
16:53:55 <int-e> EvanR: those are entirely optional :P
16:56:12 <EvanR> how optional is the build system
16:56:29 <int-e> runhaskell exists
16:56:37 <int-e> (= runghc)
16:57:42 <glguy> You could go pretty far with a Makefile and ghc invocations, though I wouldn't want to have to
16:58:19 <geekosaur> cabal script -b … mysoln.hs
16:58:47 <geekosaur> (omit the -b if you specify the deps in cabal comments)
16:59:16 <int-e> it kind of depends on how serious you are taking it; if you have a support library, plain runghc becomes less attractive
17:00:32 <glguy> just one support library?
17:01:05 <int-e> well I imagine it would depend on a bunch of other ones
17:01:07 int-e shrugs
17:02:48 <int-e> But base + containers + array cover a lot of territory and come preinstalled with ghc
17:03:06 <tomsmeding> definitely
17:03:12 <tomsmeding> you hardly need anything else for AoC
17:03:14 <glguy> yeah, I mostly stick to containers and array
17:03:34 <tomsmeding> I implemented a regex matcher for day 3
17:03:50 <tomsmeding> in 54 lines :p
17:03:53 <glguy> I used ReadS
17:04:03 <tomsmeding> I realised afterwards I could have used that yes
17:04:31 <int-e> And if that's all you use, `runghc` is quite viable. It's literally what I'm using (and used in previous years too when I actually bothered getting up in time to compete somewhat seriously)
17:05:00 <tomsmeding> compiling with `ghc` is sometimes helpful though, the interpreter is quite slow at times :p
17:05:08 <int-e> (I have made exceptions on a couple of days.)
17:05:14 <int-e> tomsmeding: true
17:06:31 <int-e> If `runghc` gets slow, I compile, run the compiled version in parallel, and then start thinking about better algorithms.
17:07:22 <EvanR> array...
17:07:33 hellwolf thinks using Haskell for AoC is cheating.
17:07:37 <EvanR> lol
17:07:39 <int-e> (and.... sometimes I have to reboot because I didn't think about memory usage until the computer becomes too sluggish to do anything about it)
17:08:17 <EvanR> I went to the bank of haskell and deposited all my RAM. Aaaaand it's gone
17:09:56 <glguy> hellwolf: I think the fastest people use Python. That's the one we should outlaw :)
17:10:21 <glguy> Give the slow functional programmers a chance!
17:10:27 <hellwolf> why is Python faster (to come up with a solution)?
17:10:52 <sprout> you need to know a lot of abstractions to start with haskell
17:11:29 <sprout> a hundred manners of expressing a for loop as a fold/scan/map/..
17:11:32 × gorignak quits (~gorignak@user/gorignak) (Quit: quit)
17:11:49 gorignak joins (~gorignak@user/gorignak)
17:13:38 ljdarj joins (~Thunderbi@user/ljdarj)
17:14:34 <sprout> well, and state and mutation... but let's not go there
17:15:17 homo joins (~homo@37-33-168-21.bb.dnainternet.fi)
17:15:32 <hellwolf> bossing machine around is still an easier thing to do than convincing yourself you understand the problem for real?
17:15:35 × homo quits (~homo@37-33-168-21.bb.dnainternet.fi) (Changing host)
17:15:35 homo joins (~homo@user/homo)
17:16:11 hellwolf impersonating the typical sort of Haskell snob talk.
17:17:06 <monochrom> Haskell entries come from more Haskell beginners.
17:17:17 <glguy> no need to impersonate others, just be yourself
17:17:25 <hellwolf> :)
17:17:32 <monochrom> That in turn is because one stays as a Haskell beginner for longer.
17:17:36 <sprout> yah. I think so. 'I need to loop here', then you write for and figure out the rest
17:17:54 <EvanR> haskell has many words all powerful. python has a few words all overpowered
17:18:34 <glguy> the aoc problems are pretty small. quick access to mutation and not getting bogged down in types makes for faster answers. To be fast you don't need a carefully structured program, generally
17:18:40 <sprout> only when you've written a ton of haskell programs you kind-of get start to get what of the one hundred abstractions will solve your problem
17:19:05 <glguy> I still think it's more fun to solve them in Haskell, but I except in a few cases I don't think it has been a speed advantage
17:19:51 korrykatti joins (~korrykatt@user/korrykatti)
17:21:14 × merijn quits (~merijn@77.242.116.146) (Ping timeout: 245 seconds)
17:21:48 <EvanR> you have your accelerating library right
17:21:57 <EvanR> does that give you a speed advantage
17:22:10 <glguy> yeah, that helps. but it's not Haskell specific
17:25:46 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
17:28:56 × housemate quits (~housemate@2405:6e00:243a:cde6:f749:6d8f:e7af:7805) (Quit: Nothing to see here. I wasn't there. https://files.catbox.moe/4yru45.pdf)
17:29:19 housemate joins (~housemate@2405:6e00:243a:cde6:f749:6d8f:e7af:7805)
17:32:10 hellwolf continues musing.
17:32:10 <hellwolf> Actually, just because the shape is the same, it doesn't mean it is also a Traversable, I am making rudimentary mistake here. My "k r (f a) -> f (k r a)" needs more than applicative constraint on "f", otherwise I can't write such a function. In Haskell, everything is parametric, I have to have the equation works for all values (even constrained.) That means, they look alike, but they are far apart, and I will still
17:32:10 <hellwolf> need a special function name for this.
17:32:29 alp joins (~alp@2001:861:8ca0:4940:de88:f2d6:60c9:dbbc)
17:34:17 KicksonButt joins (~quassel@187.21.174.221)
17:37:00 sonolin joins (~michael@user/sonolin)
17:37:12 × billchenchina quits (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Quit: Leaving)
17:42:25 tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net)
17:46:33 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
17:51:03 × homo quits (~homo@user/homo) (Quit: homo)
17:52:32 homo joins (~homo@user/homo)
17:55:17 Square joins (~Square@user/square)
17:58:25 × Square2 quits (~Square4@user/square) (Ping timeout: 244 seconds)
17:58:50 <geekosaur> I am not sure you can write it unconstrained, though
17:59:14 <geekosaur> something is needed to perform the inversion
18:08:29 stiell joins (~stiell@gateway/tor-sasl/stiell)
18:10:07 <hellwolf> you cannot. I meant that I needed more constraints, and that makes it impossible to write a "Traversable". My remnant of OOP instinct still find that surprising, since you can always inject something through subtyping.
18:10:50 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
18:11:18 pavonia joins (~user@user/siracusa)
18:11:51 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 244 seconds)
18:13:46 Lord_of_Life_ is now known as Lord_of_Life
18:13:48 <geekosaur> also you said k is a category? maybe your categoryt has something equivalent to Applicative?
18:14:14 <glguy> int-e: I got today down to < 40ms https://github.com/glguy/advent/blob/main/solutions/src/2024/09.hs - I think I can be done with it now
18:14:16 <geekosaur> ("strong lax monoidal functor" iirc)
18:15:49 OftenFaded joins (~OftenFade@user/tisktisk)
18:15:58 glguy wonders if anyone uses TransformListComp other when I do AoC
18:15:59 <geekosaur> which would still mean you migth not be able to use the Haskell abstractions since they're defined in terms of Hask instead of an arbitrary category k, but you might be able to write the equivalent yourself if your categories support it
18:19:21 × homo quits (~homo@user/homo) (Quit: homo)
18:19:21 <int-e> glguy: hmm a bit slower (and definitely less readable): https://paste.tomsmeding.com/Ep9bYKNH ...I focussed more on reusing the part 2 code for part 1.
18:20:07 <int-e> (though that makes part 1 a bit slower than it could be)
18:20:31 homo joins (~homo@user/homo)
18:21:23 <glguy> ooh, I found 10ms getting rid of the file map
18:21:24 <glguy> Time (mean ± σ): 28.9 ms ± 1.0 ms [User: 21.3 ms, System: 3.1 ms]
18:22:40 <glguy> This is the second time I've seen you pull out dropWhiteAntitone
18:22:54 <glguy> I need to burn that into my brain so I have it in mind
18:22:55 × youthlic quits (~Thunderbi@user/youthlic) (Remote host closed the connection)
18:23:21 youthlic joins (~Thunderbi@user/youthlic)
18:24:21 <int-e> I only know one trick ;-)
18:24:32 <int-e> Gotta make the best use of it.
18:24:52 <int-e> Related trick: A*-search with minView to get the next node to expand.
18:25:06 <int-e> (that's less relevant for you because I believe you have a support function for that)
18:25:38 <glguy> My A* uses IntMap.minViewWithKey
18:25:52 <glguy> buried in myimplementation of a priority queue
18:26:07 <int-e> Ah I have s/IntMap/Set/
18:26:29 <int-e> storing (value,node) pairs
18:30:37 <int-e> Btw, there was a weird dual approach to this problem where you start filling the gaps from the front with earliest file from the end that fits. But it's not a simplification, it's about the same amount and kind of code.
18:31:10 <int-e> (mostly it changes how you track file ids)
18:31:40 <glguy> Oh, I guess that would be slightly simpler because you never have to "put back" a partial file
18:32:16 <glguy> while in my case I have to insert the unused freespace back into the map
18:33:00 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
18:33:15 <int-e> yeah it was very attractive for part 1
18:33:16 × korrykatti quits (~korrykatt@user/korrykatti) (Remote host closed the connection)
18:33:58 korrykatti joins (~korrykatt@user/korrykatti)
18:34:05 <int-e> hrm
18:35:06 <int-e> That's not what I meant to express. It was inspired by part 1 where you literally fill gaps with files starting from the end.
18:35:36 <int-e> Anyway, mostly I was disappointed that it didn't simplify anything.
18:36:24 <int-e> (for me)
18:37:51 target_i joins (~target_i@user/target-i/x-6023099)
18:40:54 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:43:56 <hellwolf> class PatternMatchable f where match :: k r (f a) -> (f (k r a) -> k r b) -> k r (f b)
18:43:56 <hellwolf> with LambdaCase and BlockArguments, I should have: "match p \case -> Pat1 -> result1; Pat2 -> result2; _ -> defaultResult;"
18:43:56 <hellwolf> Does this look like anything?
18:46:30 rstromlund joins (~user@user/rstromlund)
18:48:37 weary-traveler joins (~user@user/user363627)
18:50:16 <monochrom> Maybe comonad, but I forgot what its cobind really looks like.
18:50:27 machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net)
18:50:32 × korrykatti quits (~korrykatt@user/korrykatti) (Remote host closed the connection)
18:53:50 <haskellbridge> <hellwolf> wow, comonad extend function
18:53:58 <haskellbridge> <hellwolf> extend :: (w a -> b) -> w a -> w b
18:54:08 <monochrom> :)
18:55:15 <haskellbridge> <hellwolf> But I don't think I can implement extract and duplicate. Let me think a bit
18:55:32 × machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 252 seconds)
18:56:32 <monochrom> People have considered monads minus pure and comonads minus extract. I forgot what they're called.
18:56:37 <haskellbridge> <hellwolf> my uneducated guess, CoApplicative?
18:58:49 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:59:20 <haskellbridge> <hellwolf> (<*>) :: f (a -> b) -> f a -> f b
18:59:32 <haskellbridge> <hellwolf> vs.
18:59:32 <haskellbridge> extend :: (w a -> b) -> w a -> w b
19:04:13 <haskellbridge> <hellwolf> nah, I squinted too hard, not the same
19:11:39 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
19:16:08 j1n37 joins (~j1n37@user/j1n37)
19:25:13 × myxos quits (~myxos@syn-065-028-251-121.res.spectrum.com) (Remote host closed the connection)
19:25:54 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:3430:95f4:5805:1733)
19:25:58 myxos joins (~myxos@syn-065-028-251-121.res.spectrum.com)
19:28:57 ft joins (~ft@p508db9c7.dip0.t-ipconnect.de)
19:29:18 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:3430:95f4:5805:1733) (Read error: Connection reset by peer)
19:33:09 × lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 246 seconds)
19:39:29 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:3430:95f4:5805:1733)
19:47:14 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:3430:95f4:5805:1733) (Read error: Connection reset by peer)
19:49:13 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
19:52:02 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
19:53:11 droideqa joins (uid499291@user/droideqa)
19:53:21 <haskellbridge> <Bowuigi> On practice they are called Bind and Duplicate IIRC, but I think they are just other algebraic structures over endofunctors of a categroy
19:53:31 <haskellbridge> <Bowuigi> Category* lol
19:53:53 <haskellbridge> <Bowuigi> Haven't seen them with other names
19:55:04 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:3430:95f4:5805:1733)
19:55:54 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
19:57:34 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
19:58:32 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:3430:95f4:5805:1733) (Read error: Connection reset by peer)
20:00:03 × caconym quits (~caconym@user/caconym) (Quit: bye)
20:00:38 caconym joins (~caconym@user/caconym)
20:07:09 cyanteeth joins (~cyanteeth@user/cyanteeth)
20:07:17 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
20:10:25 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds)
20:11:28 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:3430:95f4:5805:1733)
20:11:48 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
20:13:08 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:3430:95f4:5805:1733) (Read error: Connection reset by peer)
20:18:17 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:3430:95f4:5805:1733)
20:18:49 machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net)
20:19:54 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
20:20:00 ash3en joins (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207)
20:21:42 <iqubic> Is foldl bad to use?
20:21:59 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:3430:95f4:5805:1733) (Read error: Connection reset by peer)
20:22:19 <Rembane> iqubic: It builds up a lot of thunks. foldl' is better.
20:22:42 <iqubic> What do dropWhileAntitone and takeWhileAntitone do from Data.Map?
20:24:07 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
20:24:08 <int-e> they do dropWhile on keys, but you promise that the predicate is antitonic, i.e. k1 <= k2 --> p k1 >= p k2. So basically, true until some cut-off point, then false.
20:25:37 <iqubic> I see. Interesting.
20:25:40 <int-e> (or takeWhile; there's also a span version)
20:26:09 <int-e> the point is that this can be done in logarithmic time
20:26:33 × Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
20:27:17 JeremyB99 joins (~JeremyB99@2607:ac80:406:4:c8a3:6284:cd9c:cd56)
20:27:18 <int-e> (on a flat array you could do a binary search)
20:28:04 <iqubic> What's the span version?
20:28:10 <iqubic> :t span
20:28:11 <lambdabot> (a -> Bool) -> [a] -> ([a], [a])
20:28:14 <int-e> :t M.spanAntitone
20:28:15 <lambdabot> (k -> Bool) -> M.Map k a -> (M.Map k a, M.Map k a)
20:28:20 <int-e> :t S.spanAntitone
20:28:21 <lambdabot> (a -> Bool) -> S.Set a -> (S.Set a, S.Set a)
20:28:36 × JeremyB99 quits (~JeremyB99@2607:ac80:406:4:c8a3:6284:cd9c:cd56) (Read error: Connection reset by peer)
20:28:46 <iqubic> Oh. I see... span is doing takeWhile and dropWhile at the same time.
20:28:50 <int-e> @src span
20:28:50 <lambdabot> span _ xs@[] = (xs, xs)
20:28:50 <lambdabot> span p xs@(x:xs') | p x = let (ys,zs) = span p xs' in (x:ys,zs)
20:28:50 <lambdabot> | otherwise = ([],xs)
20:29:05 <iqubic> :t break
20:29:06 <lambdabot> (a -> Bool) -> [a] -> ([a], [a])
20:29:12 <int-e> (I was wondering whether that would say span f xs = (takeWhile f xs, dropWhile f xs)
20:29:14 <tomsmeding> break == span . not
20:29:25 <iqubic> Ah... I see.
20:30:15 <int-e> takeWhile : dropWhile : span :: take : drop : splitAt
20:30:53 <tomsmeding> (and still no splitOn)
20:31:37 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
20:31:48 <int-e> the split design space is too fragmented for base ;-)
20:33:16 <EvanR> foldl on a list is likely to not be what you want but there are funny counterexamples
20:33:33 <EvanR> foldl on other structures might be what you want for that structure
20:33:56 <int-e> There's still no sortOn in base either. And even that seems fair because there are two reasonable versions, one for cheap functions (in terms of sortBy) and one for expensive functions (that would make an auxiliary list pairing keys and values, sort that, and then extract the values again)
20:35:18 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
20:36:04 <tomsmeding> % :t Data.List.sortOn -- int-e
20:36:04 <yahb2> Data.List.sortOn -- int-e :: Ord b => (a -> b) -> [a] -> [a]
20:36:34 <tomsmeding> int-e: has been there since ghc 7.10 :)
20:37:04 <Athas> tomsmeding: apart from your Accelerate implementations (Which don't work with upstream Accelerate, as I understand it), are you aware of other Haskell implementations of ADBench?
20:37:05 <tomsmeding> this is the one for expensive functions; the one for cheap functions is `sortBy . comparing`
20:37:14 <Athas> There's lots of Haskell AD libraries. Not sure how widely they are used.
20:37:30 <int-e> tomsmeding: wow. how did I mess up my check for that earlier...
20:37:38 <tomsmeding> Athas: right, my implementations run on my hacked up fork of Accelerate
20:37:47 <int-e> probably didn't import Data.List somehow
20:37:55 × housemate quits (~housemate@2405:6e00:243a:cde6:f749:6d8f:e7af:7805) (Quit: Nothing to see here. I wasn't there. I take IRC seriously.)
20:38:02 <geekosaur> I'm surprised you didn't know about it
20:38:15 <tomsmeding> Athas: I don't think I ever looked for any such; I could now start looking for them, but I don't think I'm a better searcher than you are :)
20:38:38 <int-e> geekosaur: I /thought/ it was there and then I checked and didn't see. I'm not actively using Haskell as much as I'd like.
20:38:43 <tomsmeding> Athas: Kmett's `ad` will perform miserably; I'm not sure about others
20:38:45 <Athas> tomsmeding: I suppose not. Thanks anyway.
20:39:20 <int-e> And evidently my memory isn't great.
20:39:23 <Athas> 'ad' is actively maintained and very elaborate. Surely it has some merits?
20:39:37 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
20:39:54 <tomsmeding> Athas: sure, but it considers arrays just Traversables of scalars
20:40:04 <tomsmeding> that ain't gonna be very fast if you have big arrays
20:40:19 weary-traveler joins (~user@user/user363627)
20:40:26 <tomsmeding> (it'll build a tape of all the individual scalar operations, with >=1 heap node per operation)
20:40:36 <tomsmeding> given this fundamental design, it's very fast
20:40:47 <Athas> Ah, I see. So no dense packing of values.
20:40:52 <tomsmeding> but this design puts a fairly low ceiling on performance for big stuff
20:41:06 <Athas> So probably not worth using for ADBench ports.
20:41:16 <tomsmeding> I don't think so, though it may be amusing
20:42:04 <tomsmeding> Athas: I compared `ad` at some point with a TH-based code transformation that did a similar thing to what `ad` does at runtime, but statically
20:42:06 housemate joins (~housemate@2405:6e00:243a:cde6:5cd1:b412:d37:ece9)
20:42:17 <tomsmeding> surely you'd think that the static code transformation will result in faster code?
20:42:29 <Athas> Depends on what you mean by "similar thing".
20:42:43 <tomsmeding> also dual numbers, also producing a tape in memory
20:42:48 <tomsmeding> it's really quite similar
20:42:57 <tomsmeding> but it was only about 2x as fast
20:43:12 <tomsmeding> sure, faster than `ad`, but `ad` does lots more stuff dynamically
20:43:23 <tomsmeding> `ad` is _fast_ for the algorithm that it implements
20:43:58 <int-e> geekosaur: tbh it's possible that I was looking for minimumOn and overgeneralized
20:44:34 × housemate quits (~housemate@2405:6e00:243a:cde6:5cd1:b412:d37:ece9) (Max SendQ exceeded)
20:44:40 <tomsmeding> Athas: ( https://dl.acm.org/doi/pdf/10.1145/3571247 , Section 10, Table 1)
20:44:48 <tomsmeding> oh hah, that's the old one
20:44:56 JeremyB99 joins (~JeremyB99@2607:ac80:406:4:c8a3:6284:cd9c:cd56)
20:45:07 <tomsmeding> optimisation got me to https://arxiv.org/pdf/2207.03418 Table 1 (p.49)
20:46:24 housemate joins (~housemate@2405:6e00:243a:cde6:5cd1:b412:d37:ece9)
20:47:28 <Athas> I wonder to which extent GHC's impressive specialisation/inlining capabilities allow it to optimise the 'ad' code.
20:48:25 <tomsmeding> Athas: you do have a point there. I don't know :)
20:49:09 × JeremyB99 quits (~JeremyB99@2607:ac80:406:4:c8a3:6284:cd9c:cd56) (Ping timeout: 245 seconds)
20:49:53 × poscat quits (~poscat@user/poscat) (Ping timeout: 248 seconds)
20:50:41 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
20:51:00 poscat joins (~poscat@user/poscat)
20:55:33 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
20:56:25 <monochrom> Great idea: ($!) can be renamed to bangOn. >:)
20:57:12 <tomsmeding> monochrom: by that logic, ($) would become 'on', which is already taken :p
20:57:42 <monochrom> It can be lazyOn.
20:58:01 <haskellbridge> <sm> lazyBang
20:58:05 <tomsmeding> (that could be song lyrics)
20:58:38 × KicksonButt quits (~quassel@187.21.174.221) (Ping timeout: 272 seconds)
21:01:08 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3)
21:03:07 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3) (Read error: Connection reset by peer)
21:03:30 <sprotte24> Hi
21:04:25 <sprotte24> I have a problem with haskell getChar. It waits until I press enter key
21:04:56 × Square quits (~Square@user/square) (Ping timeout: 244 seconds)
21:05:05 <monochrom> That would also be true of C getc().
21:05:05 <tomsmeding> sprotte24: this is buffering by your shell; try hSetBuffering stdin NoBuffering
21:06:03 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
21:06:27 <sprotte24> I use vscode with terminal and ghci>
21:07:08 <tomsmeding> sprotte24: this is not haskell-specific, this happens in any language
21:07:16 <sprotte24> wher can I put the hSetBuffering ... line?
21:07:20 <haskellbridge> <Pyu> sprotte24: That's what getChar does, it gets a character from stdin. Enter counts as a character
21:07:49 <haskellbridge> <Pyu> https://kf8nh.com/_heisenbridge/media/matrix.org/gIzyVdsjDYHWeSAmkSgfNdAb/ridYFsUrMxY/image.png
21:08:16 <tomsmeding> whether ghci puts stdin in NoBuffering mode might be platform-dependent
21:08:31 <tomsmeding> sprotte24: if you want predictable buffering behaviour for stdin, don't use ghci
21:08:47 <sprotte24> I read the problem might be in M$ windows
21:09:32 <tomsmeding> sprotte24: if you type some letters (without pressing enter), and then press backspace, do the letters disappear again?
21:09:36 <tomsmeding> (under `getChar`)
21:09:54 <sprotte24> I will try that
21:10:37 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
21:13:28 <tomsmeding> sprotte24: if so: Haskell has no logic to handle backspace on input. It's your terminal (in this case vscode, but it could be any terminal) that does that: it allows you to compose some input, using backspace if you want, and once you press enter, the text is actually sent to the application
21:13:32 <tomsmeding> this is called "buffering"
21:14:02 <geekosaur> well, not exactly. ghci does _line editing_.
21:14:07 <tomsmeding> as the application, you can tell the terminal to not do this and send keys through immediately; you do this for the input stream (stdin) by running `hSetBuffering stdin NoBuffering`
21:14:12 <tomsmeding> geekosaur: we're talking about `getChar` here
21:14:20 <geekosaur> buffering is actually soemthing different which Haskell somewhat stupidly conflates with it
21:14:29 <tomsmeding> sure, ghci does far more than this, but ghci is also not your terminal, and `getChar` does not go through ghci's line editing machinery
21:14:37 <geekosaur> getChar has no idea that the thing sending the characters is doing line editing
21:14:58 <sprotte24> when I type a char on keyboard, it is shown, and with backspace ist goes to left and disappers
21:15:19 <geekosaur> getChar is done by your program, ghci puts the terminal in rtaw mode and then processes input using haskeline
21:15:33 <tomsmeding> geekosaur: that must be a windows-only feature then
21:15:49 <tomsmeding> on my linux box, getChar gets characters immediately (i.e. what sprotte24 wants but doesn't get)
21:15:53 <tomsmeding> when in ghci
21:16:17 <tomsmeding> (outside of ghci, getChar is subject to normal terminal buffering, and whatever line editing features your terminal provides -- typically little more than backspace)
21:16:50 <tomsmeding> sprotte24: I'm not sure if you'll be able to get what you want in ghci, but ouside ghci, the hSetBuffering call should change settings so that getChar returns immediately after a single keypress
21:17:04 <geekosaur> it should also be noted that windows doesn't really support line vs. raw mode, and the lower level function getChar uses emulates it. iirc you must use a Win32 module function to avoid that
21:17:36 <tomsmeding> oh the dumb line editing in a standalone haskell program when you do `getChar` is implemented by the RTS?
21:17:41 <tomsmeding> (on windows)
21:19:16 <geekosaur> the _Windows_ RTS, not Haskell's
21:19:37 <tomsmeding> oh interesting
21:19:40 × housemate quits (~housemate@2405:6e00:243a:cde6:5cd1:b412:d37:ece9) (Quit: Nothing to see here. I wasn't there. I take IRC seriously.)
21:19:42 <geekosaur> a library that simulates POSIX command line parameter handling, terminal handling, etc.
21:19:48 <tomsmeding> right
21:20:24 <tomsmeding> okay, so my claims about what software is responsible for this weren't quite correct
21:20:27 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
21:20:33 <tomsmeding> but the cure is still accurate, I think
21:21:25 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
21:22:22 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3)
21:25:10 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
21:26:15 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
21:28:22 <sprotte24> just compile with ghci> ghc filename.hs does not work, I thought I could compile ith code and run ist without ghci?
21:29:23 × ash3en quits (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 265 seconds)
21:29:42 ash3en joins (~Thunderbi@146.70.124.222)
21:29:47 <tomsmeding> sprotte24: you should call `ghc` outside ghci
21:32:34 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:35:50 housemate joins (~housemate@ppp203-122-213-191.static.internode.on.net)
21:35:50 × MyNetAz quits (~MyNetAz@user/MyNetAz) (Read error: Connection reset by peer)
21:36:37 × housemate quits (~housemate@ppp203-122-213-191.static.internode.on.net) (Max SendQ exceeded)
21:36:48 × briandaed quits (~root@user/briandaed) (Remote host closed the connection)
21:37:05 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
21:37:31 housemate joins (~housemate@ppp203-122-213-191.static.internode.on.net)
21:37:49 × motherfsck quits (~motherfsc@user/motherfsck) (Quit: quit)
21:38:24 <monochrom> This is why at some point I tell students "it's telephone games all the way down".
21:40:21 <EvanR> the chinese room thought experiment, but you take liberties with the translation rules
21:41:01 <monochrom> With some many middle-persons --- ghci, vscode, terminal emulator, the OS --- you can be certain that each of them tries to do something funny behind your back, and you can't be certain what cause(s) waiting for <enter> and which one to talk to to disable it.
21:41:38 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
21:42:51 MyNetAz joins (~MyNetAz@user/MyNetAz)
21:44:22 × michalz quits (~michalz@185.246.207.201) (Ping timeout: 265 seconds)
21:44:23 ash3en1 joins (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207)
21:44:41 KicksonButt joins (~quassel@187.21.174.221)
21:45:45 <monochrom> A favourite exam question (for a unix course) is to write a Bourne shell echo command to output, say, 2 backslashes. (The gist being that the shell itself is one layer of escaping and its echo command adds one more layer of escaping.)
21:46:05 × ash3en quits (~Thunderbi@146.70.124.222) (Ping timeout: 260 seconds)
21:46:05 ash3en1 is now known as ash3en
21:46:42 <sprotte24> tomsmeding, I was able to compile from VSC Terminal,it works. But the buffering problem persists. It is a hoework game hangman, I have to enter single matching characters, bute it answers only by using return key. And I can enter some more characters without reaction, but when I type return key the code the program writes all outstanding steps
21:47:06 <tomsmeding> also with the hSetBuffering call at the start of your program?
21:47:07 × ash3en quits (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Client Quit)
21:47:40 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3) (Read error: Connection reset by peer)
21:48:01 <int-e> monochrom: do you ask for the first 20 characters of `print (fix show)` for functional programming? :)
21:48:08 <geekosaur> didnt we already determine he was tasked with writing a function to be run in ghci?
21:48:17 <geekosaur> so there's no main?
21:48:53 <geekosaur> (scan back for yesterday's discussion of how getArgs or equivalent isn't part of the assignment)
21:48:57 <int-e> > last $ take 20 $ fix show
21:48:58 <lambdabot> '\\'
21:49:25 <monochrom> Yes. But then ghci inside different contexts still behave differently. I just tried ghci inside emacs haskell-mode, it still waits for <enter>.
21:50:48 <monochrom> At this point we have insufficient information about the testing environment. (Does the instructor even care about VSCode?)
21:50:56 <monochrom> (I know I wouldn't.)
21:52:28 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
21:53:13 <monochrom> int-e: I don't teach print (or the Show instance of String), so I don't put that on the exam.
21:54:20 <monochrom> But I can provide, on the fly, a function f doing the same thing as show for String, then ask about x = f x.
21:54:53 × cyanteeth quits (~cyanteeth@user/cyanteeth) (Quit: cyanteeth)
21:55:27 cyanteeth joins (~cyanteeth@user/cyanteeth)
21:55:41 <EvanR> f sounds non trivial to describe
21:55:53 <monochrom> I already teach the construction method of x0 = bottom, x1 = f x0, x2 = f x1, etc
21:56:16 <tomsmeding> EvanR: f ('"':s) = '\\' : '"' : f s; f ('\\':s) = '\\' : '\\' : s; f (c:s) = c : f s
21:56:21 <tomsmeding> plenty for this :p
21:56:23 <sprotte24> I get very little help. We have to transfer the haskell code to out university. The code ist tested automatically. The answer was: It compiles, but while testing, Ig get runtime errors. The behaviour of the online test may be other (unix?) than my own (windows). Haskell executes a bunch of different tests.
21:57:04 <monochrom> Yes it's very much simpler if you use Linux.
21:57:27 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
21:58:45 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3)
21:59:24 <sprotte24> next week we will end with haskell, continue with prolog :-)
22:01:30 <sprotte24> our main topic is declarative programming
22:01:51 <monochrom> With automated testing, I wouldn't worry about getChar "waiting for <enter>", probabilistically speaking.
22:02:54 × rstromlund quits (~user@user/rstromlund) (Ping timeout: 252 seconds)
22:04:01 × jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 248 seconds)
22:04:25 <monochrom> The "waiting" is caused by running things in a terminal context, not by getChar itself (it has no control over this). An automated testing environment that tries to reproduce/emulate a terminal context is way too much work, no one is likely to actually do that kind of testing. I know because I tried and gave up.
22:06:11 <monochrom> Instead the automated testing environment is much more likely to just use Unix pipelining or file redirection, which takes zero effort to set up (they are how Unix works by default), in which no "waiting" will happen.
22:06:20 <tomsmeding> (why does one specify an auto-graded assignment with getChar? Just have the assignment say "use getLine and take the first character" or something)
22:06:42 <tomsmeding> (then this whole problem doesn't even come up)
22:07:28 <sprotte24> So I get 0 of 4 points for this task, unfair. The code runs using enter key but this is not allowed
22:07:53 <tomsmeding> sprotte24: have you tried submitting code that uses getChar, and whenever you receive '\n', just ignore it and getChar again?
22:08:06 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
22:08:08 <tomsmeding> not saying this will work, but under monochrom's assumption, it may be what the testing framework expects
22:08:10 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3) (Read error: Connection reset by peer)
22:10:26 <monochrom> Oh I have zero sympathy for "my code works but it doesn't pass your tests".
22:10:51 <int-e> no sympathy for either side?
22:10:59 <monochrom> No sympathy for the complainer.
22:11:13 <tomsmeding> I'd first want to see the assignment description before passing that jugement
22:11:15 <tomsmeding> *judgement
22:11:28 <monochrom> OTOH I agree that the failure case demands more information than "failed".
22:11:28 <int-e> I wanted to say "specification" but yes. That.
22:11:58 <tomsmeding> especially if no test suite is provided with the assignment to the students
22:12:23 × housemate quits (~housemate@ppp203-122-213-191.static.internode.on.net) (Quit: Nothing to see here. I wasn't there. I take IRC seriously.)
22:12:32 <int-e> Involving interactive IO in assignments sounds risky.
22:12:33 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
22:12:42 housemate joins (~housemate@ppp203-122-213-191.static.internode.on.net)
22:12:43 × MyNetAz quits (~MyNetAz@user/MyNetAz) (Remote host closed the connection)
22:12:54 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
22:12:55 <EvanR> tomsmeding, judgment!
22:13:01 <geekosaur> what do you do if the "test suite" is "upload your work to our server, which will test it and give you pass/fail"
22:13:02 <tomsmeding> and non-line-based interactive IO is even worse
22:13:29 <tomsmeding> EvanR: I always get that wrong, I find that spelling very unintuitive
22:13:35 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3)
22:13:49 <EvanR> the silent and now invisible e
22:14:01 <tomsmeding> geekosaur: that's not a test suite, that's an online autograder. A local test suite is a white box that you can look into, to understand whatever the assignment specification left underspecified
22:14:04 <monochrom> Yeah I had to hardcode a special case in my head for "judgment".
22:14:13 <monochrom> English die die die.
22:14:28 <geekosaur> yes, my point is that a lot of palces seem to be doing the black box thing
22:14:39 <tomsmeding> we don't :p
22:14:39 <int-e> EvanR: https://www.grammarly.com/blog/commonly-confused-words/judgement-judgment/ -- not so clear
22:14:57 <monochrom> But I think judgement is widely accepted too.
22:14:57 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3) (Read error: Connection reset by peer)
22:15:44 <tomsmeding> Wiktionary calls it "archaic"
22:16:08 <int-e> "that's, like, from the last century"
22:16:14 <tomsmeding> and dictionary.com doesn't even have it
22:16:28 <geekosaur> fwiw whatever local dictionary is being used to spellcheck what I type into IRC/matrix/emacs thinks both are fine
22:16:29 <tomsmeding> I don't have access to better dictionaries here
22:16:30 <EvanR> I read the article thanks
22:16:41 <EvanR> it says that an unsurprising number of people misspell this word! xD
22:17:41 <monochrom> But a logical conclusion of "this language is not dead, it's evolving" is that if enough people "misspell" it then it is ratified.
22:17:53 <EvanR> screw it roll back and just go with jugement
22:18:02 <monochrom> haha
22:18:47 <geekosaur> jujmnt
22:18:54 <EvanR> ^
22:19:18 <int-e> . o O ( verdict )
22:19:43 MyNetAz joins (~MyNetAz@user/MyNetAz)
22:20:30 <monochrom> Isn't there some kind of instructor office hours when you can bring your code to the instructor and ask in what way it fails the test?
22:20:44 <tomsmeding> sprotte24: ^
22:21:22 <monochrom> When it's my turn to teach, I am actually infuriated when students ask total strangers instead of me.
22:21:57 mange joins (~user@user/mange)
22:23:27 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
22:24:09 <monochrom> Sometimes, when I can help it, I actually design assignments to punish students who ask total strangers. Remember that time when I created an assignment for the probability monad but called it "MonadRandom" so that if students googled it they would get it all wrong? >:)
22:24:46 rstromlund joins (~user@user/rstromlund)
22:25:00 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3)
22:25:04 <glguy> Are you seeing new kinds of garbage submitted now that ChatGPT can help to write incorrect code?
22:25:11 tomsmeding remembers that
22:25:53 <glguy> I've been asking it how to improve my AoC solutions and it's been offering bugs I could add to them
22:26:19 <glguy> it sometimes comes up with nice ideas for my comments, though
22:26:35 <monochrom> And during summer, a colleague teaching a math course defined an "algebraic structure", the axioms of which are exactly the ring axioms. I asked him, he confirmed that he did it to confuse students who use chatGPT.
22:26:50 <int-e> -- here be dragons
22:27:35 <glguy> It thought I could make my p1 solution today a little more concise by not handling the moving of things from the end back into free spaces
22:27:50 <glguy> told me that that was an "optimization"
22:29:32 <EvanR> ChatGPT is so smart that it realizes you're trying to solve AoC questions, and intentionally gives you wrong answers so you can't cheat!
22:29:54 <int-e> glguy: well, did it make the code faster ;)
22:30:17 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
22:30:31 <glguy> actually, probably not. That case decremented both the left *and* right cursor (the code runs until the cursors meet up)
22:30:48 <int-e> hah
22:30:49 <glguy> so the loop would probably have run for more iterations that way than without the help
22:31:02 <monochrom> haha so much carbon footprint spent on increasing more carbon footprint
22:31:07 <int-e> was there a chance to run off the left end?
22:31:30 <glguy> the stop condition was if the left cursor exceeded the right cursor
22:31:43 <int-e> Maybe it's not worthwhile to analyze bugs that were introduced with zero thought behind them.
22:31:44 <glguy> and the left cursor always advances by one, so probably not
22:31:45 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3) (Read error: Connection reset by peer)
22:32:14 <int-e> (This is the main reason I'm staying away from LLMs... they're bound to be wrong on anything interesting and there's nothing to learn from their mistakes.)
22:33:18 <glguy> As someone working around "computer security" I'm looking forward to all the new buggy software we're going to get from letting LLMs help generate it
22:33:24 <int-e> I /suppose/ they can be useful for finding adjacent keywords for a problem. But surely there are cheaper ways to accomplish that.
22:34:14 <haskellbridge> <Bowuigi> Any papers on Normalization by Evaluation with constraints? I'd like to know how to represent builtins that have constraints in them
22:35:12 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:36:50 <haskellbridge> <Bowuigi> Erasing (evidence translating constraints) the whole program in order to run it seems wasteful for an interpreter
22:39:45 × cyanteeth quits (~cyanteeth@user/cyanteeth) (Quit: cyanteeth)
22:40:17 cyanteeth joins (~cyanteeth@user/cyanteeth)
22:41:31 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
22:41:38 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
22:46:09 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
22:46:15 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3)
22:47:41 × rstromlund quits (~user@user/rstromlund) (Ping timeout: 265 seconds)
22:48:16 × cyanteeth quits (~cyanteeth@user/cyanteeth) (Quit: cyanteeth)
22:48:17 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3) (Read error: Connection reset by peer)
22:52:51 × OftenFaded quits (~OftenFade@user/tisktisk) (Quit: Client closed)
22:54:25 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:55:07 Guest74 joins (~Guest84@46.222.30.177)
22:56:13 × Guest74 quits (~Guest84@46.222.30.177) (Client Quit)
22:56:53 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
22:59:54 OftenFaded joins (~OftenFade@user/tisktisk)
23:00:39 housemate_ joins (~housemate@ppp203-122-213-191.static.internode.on.net)
23:00:39 × MyNetAz quits (~MyNetAz@user/MyNetAz) (Remote host closed the connection)
23:01:05 × housemate quits (~housemate@ppp203-122-213-191.static.internode.on.net) (Ping timeout: 248 seconds)
23:01:11 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
23:01:43 JuanDaugherty joins (~juan@user/JuanDaugherty)
23:01:50 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3)
23:04:20 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3) (Read error: Connection reset by peer)
23:06:21 × SlackCoder quits (~SlackCode@64-94-63-8.ip.weststar.net.ky) (Quit: Leaving)
23:07:40 MyNetAz joins (~MyNetAz@user/MyNetAz)
23:10:36 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3)
23:10:36 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
23:12:15 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
23:16:27 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
23:18:47 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3) (Read error: Connection reset by peer)
23:20:57 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:25:12 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3)
23:28:21 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3) (Read error: Connection reset by peer)
23:28:42 × housemate_ quits (~housemate@ppp203-122-213-191.static.internode.on.net) (Ping timeout: 252 seconds)
23:32:25 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
23:36:31 × philopsos quits (~caecilius@user/philopsos) (Ping timeout: 252 seconds)
23:36:49 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
23:40:54 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3)
23:47:22 × JeremyB99 quits (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3) (Read error: Connection reset by peer)
23:47:50 merijn joins (~merijn@128-137-045-062.dynamic.caiway.nl)
23:52:10 × merijn quits (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
23:55:11 JeremyB99 joins (~JeremyB99@2607:ac80:407:7:3da5:f38:dd5d:1da3)
23:56:09 dpratt joins (~dpratt@165.225.220.148)
23:57:34 × tjbc quits (~tjbc@user/fliife) (Remote host closed the connection)
23:58:03 <dpratt> curses! my AoC day 9 code produces the right answer for the test input, but not the real input (it's too high apparently)!
23:58:46 tjbc joins (~tjbc@user/fliife)

All times are in UTC on 2024-12-09.