2026/06/28

2026-06-28 00:00:17 +0000tv(~tv@user/tv) tv
2026-06-28 00:01:46 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-06-28 00:01:53 +0000vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 271 seconds)
2026-06-28 00:06:43 +0000 <jreicher> schuelermine: my preferred alternative to any given terminal emulator is to not use a terminal emulator at all.
2026-06-28 00:12:20 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2026-06-28 00:12:22 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 00:17:07 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-06-28 00:24:20 +0000fgarcia(~lei@user/fgarcia) (Ping timeout: 245 seconds)
2026-06-28 00:24:52 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-06-28 00:24:52 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
2026-06-28 00:25:17 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-06-28 00:26:25 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-06-28 00:26:51 +0000fgarcia(~lei@user/fgarcia) (Max SendQ exceeded)
2026-06-28 00:27:43 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 00:32:59 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-06-28 00:33:19 +0000fgarcia(~lei@user/fgarcia) (Max SendQ exceeded)
2026-06-28 00:34:36 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-06-28 00:39:23 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-06-28 00:45:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 00:50:17 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-06-28 01:01:07 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 01:03:27 +0000nattkyrro(~serenity@user/nattkyrro) (Ping timeout: 258 seconds)
2026-06-28 01:05:24 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-06-28 01:05:33 +0000nattkyrro(~serenity@user/nattkyrro) nattkyrro
2026-06-28 01:09:50 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
2026-06-28 01:14:00 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-06-28 01:16:30 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 01:18:33 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Ping timeout: 248 seconds)
2026-06-28 01:21:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 266 seconds)
2026-06-28 01:21:36 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-06-28 01:26:11 +0000 <schuelermine> jreicher: by that, do you mean a linux VT console?
2026-06-28 01:28:48 +0000 <monochrom> I'm "progressive" and I say that if you don't use terminal emulators then you use pure GUI. >:)
2026-06-28 01:29:21 +0000 <monochrom> Even "I use smart phones, what is terminal emulator? what even is computer?" >:)
2026-06-28 01:31:05 +0000 <geekosaur> apple beat you to that one
2026-06-28 01:31:41 +0000 <monochrom> Yeah I am plagiarizing from that Apple ad!
2026-06-28 01:31:52 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 01:33:55 +0000acidjnk_new(~acidjnk@p200300d6e74def0343353b3983e3e743.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2026-06-28 01:34:33 +0000acidjnk(~acidjnk@p200300d6e74def0343353b3983e3e743.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2026-06-28 01:36:25 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-28 01:39:10 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-06-28 01:44:09 +0000 <fgarcia> i've met windows and macos users who think linux is terminal only ._.
2026-06-28 01:44:49 +0000DetourNetworkUK(DetourNetw@user/DetourNetworkUK) (Read error: Connection reset by peer)
2026-06-28 01:46:31 +0000DetourNetworkUK(DetourNetw@user/DetourNetworkUK) DetourNetworkUK
2026-06-28 01:47:08 +0000 <monochrom> Not surprised. Extremists are the most vocal and representative, as always.
2026-06-28 01:47:14 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 01:47:40 +0000 <monochrom> Conversely linux users think windows and mac users are fisher toy players.
2026-06-28 01:48:17 +0000 <monochrom> There was a time I thought that GUI users were illiterate. >:)
2026-06-28 01:51:42 +0000ft(~ft@p3e9bc08f.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2026-06-28 01:51:55 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-06-28 01:53:32 +0000ft(~ft@p4fc2a1a4.dip0.t-ipconnect.de) ft
2026-06-28 02:02:37 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 02:05:04 +0000op_4(~tslil@user/op-4/x-9116473) (Remote host closed the connection)
2026-06-28 02:05:42 +0000op_4(~tslil@user/op-4/x-9116473) op_4
2026-06-28 02:08:44 +0000 <jreicher> schuelermine: No, I use an Emacs buffer
2026-06-28 02:09:20 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-06-28 02:09:54 +0000 <jreicher> Basically it becomes just plain text there and back. No fancy display instructions.
2026-06-28 02:14:25 +0000 <EvanR> I knew people who think linux is terminal only and thus "DOS"
2026-06-28 02:14:31 +0000ft(~ft@p4fc2a1a4.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2026-06-28 02:18:02 +0000 <fgarcia> though if i do start carrying a laptop around, i kind of want to install Q4OS on it. i think that's the one that has the windows theme haha
2026-06-28 02:19:33 +0000 <EvanR> I vaguely recall a win95 theme for icewm
2026-06-28 02:19:56 +0000 <EvanR> a minor riot
2026-06-28 02:20:39 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 02:21:11 +0000 <monochrom> icewm and a couple of others IIRC
2026-06-28 02:25:25 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-06-28 02:25:31 +0000ft(~ft@p3e9bcc41.dip0.t-ipconnect.de) ft
2026-06-28 02:26:15 +0000schuelermine(~Thunderbi@user/schuelermine) (Remote host closed the connection)
2026-06-28 02:29:29 +0000td_(~td@2001:9e8:19c4:7400:bf7f:cb56:94b:5d2b) (Ping timeout: 244 seconds)
2026-06-28 02:30:19 +0000ft(~ft@p3e9bcc41.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2026-06-28 02:31:13 +0000td_(~td@i53870910.versanet.de)
2026-06-28 02:31:20 +0000 <monochrom> But no DeriveBiFunctor :(
2026-06-28 02:33:16 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-28 02:33:16 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
2026-06-28 02:36:02 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 02:37:24 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 245 seconds)
2026-06-28 02:40:41 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-06-28 02:42:06 +0000 <EvanR> DeriveEveryImaginableFunctorVariant
2026-06-28 02:45:51 +0000m(~travltux@user/travltux) (Ping timeout: 246 seconds)
2026-06-28 02:51:25 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 02:56:06 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-06-28 03:06:13 +0000ft(~ft@p3e9bc5a3.dip0.t-ipconnect.de) ft
2026-06-28 03:06:48 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 03:07:00 +0000tusko(~uwu@user/tusko) (Remote host closed the connection)
2026-06-28 03:07:17 +0000tusko(~uwu@user/tusko) tusko
2026-06-28 03:07:29 +0000yanmaani(~yanmaani@gateway/tor-sasl/yanmaani) (Remote host closed the connection)
2026-06-28 03:07:40 +0000yanmaani(~yanmaani@gateway/tor-sasl/yanmaani) yanmaani
2026-06-28 03:07:51 +0000yanmaani(~yanmaani@gateway/tor-sasl/yanmaani) (Remote host closed the connection)
2026-06-28 03:08:01 +0000yanmaani(~yanmaani@gateway/tor-sasl/yanmaani) yanmaani
2026-06-28 03:09:14 +0000ttybitnik(~ttybitnik@user/wolper) (Quit: Fading out...)
2026-06-28 03:11:43 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-06-28 03:12:53 +0000ft(~ft@p3e9bc5a3.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2026-06-28 03:15:04 +0000ft(~ft@p3e9bcc2e.dip0.t-ipconnect.de) ft
2026-06-28 03:21:28 +0000ft(~ft@p3e9bcc2e.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2026-06-28 03:21:48 +0000ft(~ft@p3e9bc453.dip0.t-ipconnect.de) ft
2026-06-28 03:22:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 03:26:27 +0000ft(~ft@p3e9bc453.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2026-06-28 03:26:31 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-28 03:26:54 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-06-28 03:27:34 +0000ft(~ft@p3e9bcc51.dip0.t-ipconnect.de) ft
2026-06-28 03:33:27 +0000ft(~ft@p3e9bcc51.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2026-06-28 03:35:19 +0000ft(~ft@p3e9bc90f.dip0.t-ipconnect.de) ft
2026-06-28 03:37:32 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 03:38:49 +0000m(~travltux@user/travltux) travltux
2026-06-28 03:40:06 +0000ft(~ft@p3e9bc90f.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2026-06-28 03:40:52 +0000ft(~ft@p4fc2a1bf.dip0.t-ipconnect.de) ft
2026-06-28 03:44:20 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-28 03:53:39 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 03:56:35 +0000 <janus> how many haskell compilers are currently under development besides ghc?
2026-06-28 03:57:21 +0000 <janus> i can think of superstar64/Hazy, microHS, secret fork of jhc, bhc (the ai slop one)
2026-06-28 03:57:56 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 247 seconds)
2026-06-28 03:58:35 +0000 <janus> the prorprietary bank one doesn't count because it is strict :P
2026-06-28 04:01:33 +0000 <janus> oh and then there is Ben Lynn's, and orionsj's fork of it
2026-06-28 04:01:42 +0000 <janus> and roconnor also is working on something similar
2026-06-28 04:09:03 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 04:11:51 +0000Guest29(~Guest29@8.130.95.189)
2026-06-28 04:13:03 +0000Guest91(~Guest91@8.130.84.107)
2026-06-28 04:13:14 +0000Guest57(~Guest57@8.130.95.189)
2026-06-28 04:13:39 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 245 seconds)
2026-06-28 04:13:39 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-06-28 04:15:18 +0000Guest57(~Guest57@8.130.95.189) (Client Quit)
2026-06-28 04:15:29 +0000Guest29(~Guest29@8.130.95.189) (Client Quit)
2026-06-28 04:15:30 +0000Guest91(~Guest91@8.130.84.107) (Client Quit)
2026-06-28 04:16:38 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-28 04:16:39 +0000spew(~spew@user/spew) (Quit: nyaa~)
2026-06-28 04:24:26 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 04:29:07 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-06-28 04:34:35 +0000[dpk](~dpk@jains.nonceword.org)
2026-06-28 04:34:38 +0000mstruebing_(~mstruebin@ns343649.ip-188-165-193.eu)
2026-06-28 04:35:38 +0000noctux1(~noctux@user/noctux) noctux
2026-06-28 04:35:39 +0000Arsen(16abab341f@gentoo/developer/managarm.dev.Arsen) (Ping timeout: 265 seconds)
2026-06-28 04:35:39 +0000lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 265 seconds)
2026-06-28 04:35:39 +0000ent(entgod@kapsi.fi) (Ping timeout: 265 seconds)
2026-06-28 04:35:40 +0000noctuks(IbgdqiR86O@user/noctux) (Ping timeout: 265 seconds)
2026-06-28 04:35:40 +0000mstruebing(~mstruebin@ns343649.ip-188-165-193.eu) (Ping timeout: 265 seconds)
2026-06-28 04:35:40 +0000dpk(~dpk@jains.nonceword.org) (Ping timeout: 265 seconds)
2026-06-28 04:36:17 +0000lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2026-06-28 04:39:26 +0000ent(entgod@kapsi.fi) ent
2026-06-28 04:39:48 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 04:42:26 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 248 seconds)
2026-06-28 04:44:29 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-06-28 04:48:55 +0000dolio(~dolio@130.44.140.168) (Ping timeout: 245 seconds)
2026-06-28 04:49:58 +0000dolio(~dolio@130.44.140.168) dolio
2026-06-28 04:50:29 +0000Arsen(16abab341f@gentoo/developer/managarm.dev.Arsen) Arsen
2026-06-28 04:52:43 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-28 04:55:11 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 04:59:23 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 243 seconds)
2026-06-28 05:02:52 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 276 seconds)
2026-06-28 05:10:35 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 05:17:49 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-06-28 05:27:28 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2026-06-28 05:27:53 +0000Sgeo(~Sgeo@user/sgeo) Sgeo
2026-06-28 05:28:45 +0000merijn(~merijn@62.45.136.136) merijn
2026-06-28 05:33:18 +0000merijn(~merijn@62.45.136.136) (Ping timeout: 265 seconds)
2026-06-28 05:38:00 +0000karenw(~karenw@user/karenw) (Remote host closed the connection)
2026-06-28 05:39:56 +0000karenw(~karenw@user/karenw) karenw
2026-06-28 05:44:04 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 05:48:48 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-06-28 05:52:46 +0000pyooque(~puke@user/puke) puke
2026-06-28 05:52:46 +0000pukeGuest7225
2026-06-28 05:52:46 +0000pyooquepuke
2026-06-28 05:53:34 +0000Guest7225(~puke@user/puke) (Read error: Connection reset by peer)
2026-06-28 05:54:40 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 05:57:28 +0000 <jaror> janus: Helium still got some commits two years ago.
2026-06-28 05:59:02 +0000tromp(~textual@2001:1c00:340e:2700:dd19:dfa1:d2a9:f5b7)
2026-06-28 05:59:35 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 275 seconds)
2026-06-28 06:10:03 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 06:14:52 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-06-28 06:17:33 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-28 06:18:37 +0000haritz(~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
2026-06-28 06:25:25 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 06:26:17 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 248 seconds)
2026-06-28 06:29:14 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-28 06:29:56 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-06-28 06:33:54 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 256 seconds)
2026-06-28 06:36:22 +0000tusko(~uwu@user/tusko) (Remote host closed the connection)
2026-06-28 06:40:46 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 06:41:37 +0000tusko(~uwu@user/tusko) tusko
2026-06-28 06:45:18 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 243 seconds)
2026-06-28 06:47:05 +0000machinedgod(~machinedg@d108-173-95-19.abhsia.telus.net) (Ping timeout: 248 seconds)
2026-06-28 06:47:56 +0000tromp(~textual@2001:1c00:340e:2700:dd19:dfa1:d2a9:f5b7) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-06-28 06:50:41 +0000chromoblob(~chromoblo@user/chromob1ot1c) (Remote host closed the connection)
2026-06-28 06:50:57 +0000chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-06-28 06:51:55 +0000traxex(traxex@user/traxex) traxex
2026-06-28 06:55:40 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 07:01:01 +0000tt12316070197800(~tt1231@2603:6010:8700:4a81:a4f6:acff:fe95:3803) (Quit: The Lounge - https://thelounge.chat)
2026-06-28 07:02:15 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-28 07:03:03 +0000tt12316070197800(~tt1231@2603:6010:8700:4a81:a4f6:acff:fe95:3803) tt1231
2026-06-28 07:09:09 +0000wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2026-06-28 07:11:15 +0000berke93_(~default@193.108.195.249)
2026-06-28 07:14:11 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-28 07:15:00 +0000tromp(~textual@2001:1c00:340e:2700:dd19:dfa1:d2a9:f5b7)
2026-06-28 07:15:49 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 07:16:46 +0000takuan(~takuan@d8D86B9E9.access.telenet.be)
2026-06-28 07:18:05 +0000peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 245 seconds)
2026-06-28 07:21:34 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-06-28 07:24:37 +0000tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2026-06-28 07:32:13 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 07:32:43 +0000ski(~ski@31-208-30-55.cust.bredband2.com) (Ping timeout: 264 seconds)
2026-06-28 07:33:35 +0000ski(~ski@31-208-30-55.cust.bredband2.com)
2026-06-28 07:36:10 +0000[dpk]dpk
2026-06-28 07:36:41 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-06-28 07:47:35 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 07:49:42 +0000ss4(~wootehfoo@user/wootehfoot) wootehfoot
2026-06-28 07:51:59 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-28 07:52:48 +0000ss4(~wootehfoo@user/wootehfoot) (Client Quit)
2026-06-28 07:53:30 +0000wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 245 seconds)
2026-06-28 07:56:42 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 08:02:39 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-06-28 08:04:08 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-06-28 08:07:18 +0000wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2026-06-28 08:11:23 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 252 seconds)
2026-06-28 08:13:17 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 08:14:46 +0000divlamir(~divlamir@user/divlamir) (Read error: Connection reset by peer)
2026-06-28 08:14:52 +0000divlamir_(~divlamir@user/divlamir) divlamir
2026-06-28 08:15:32 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-28 08:15:43 +0000divlamir_divlamir
2026-06-28 08:17:42 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-06-28 08:28:40 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 08:30:33 +0000Digit(~user@user/digit) (Read error: Connection reset by peer)
2026-06-28 08:33:15 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-06-28 08:38:12 +0000karenw(~karenw@user/karenw) (Ping timeout: 252 seconds)
2026-06-28 08:43:57 +0000hayhaystack(~husshpupp@user/husshpuppy) husshpuppy
2026-06-28 08:44:02 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 08:48:34 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-06-28 08:51:02 +0000acidjnk_new(~acidjnk@p200300d6e74def039d5a069af2df0e93.dip0.t-ipconnect.de)
2026-06-28 08:51:12 +0000acidjnk(~acidjnk@p200300d6e74def039d5a069af2df0e93.dip0.t-ipconnect.de) acidjnk
2026-06-28 08:51:35 +0000Googulator52(~Googulato@80-95-87-76.pool.digikabel.hu) (Quit: Client closed)
2026-06-28 08:51:37 +0000rubin55(sid666180@id-666180.ilkley.irccloud.com) rubin55
2026-06-28 08:52:00 +0000Googulator52(~Googulato@80-95-87-76.pool.digikabel.hu)
2026-06-28 08:54:55 +0000Digit(~user@user/digit) Digit
2026-06-28 08:55:16 +0000lynxx_(~lynxx_@2001:9e8:3bf4:6d00:7c69:8855:c9f5:ce3b)
2026-06-28 08:55:46 +0000lynxx_(~lynxx_@2001:9e8:3bf4:6d00:7c69:8855:c9f5:ce3b) (Client Quit)
2026-06-28 08:56:52 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 276 seconds)
2026-06-28 08:57:43 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-28 08:58:17 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-28 09:03:15 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 272 seconds)
2026-06-28 09:04:41 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-06-28 09:28:33 +0000Digit(~user@user/digit) (Read error: Connection reset by peer)
2026-06-28 09:29:21 +0000Digit`(~user@195.144.208.46.dyn.plus.net)
2026-06-28 09:33:55 +0000poscat(~poscat@user/poscat) (Remote host closed the connection)
2026-06-28 09:34:34 +0000ski(~ski@31-208-30-55.cust.bredband2.com) (Ping timeout: 276 seconds)
2026-06-28 09:34:58 +0000traxex(traxex@user/traxex) (Ping timeout: 265 seconds)
2026-06-28 09:36:58 +0000poscat(~poscat@user/poscat) poscat
2026-06-28 09:37:54 +0000berke93_(~default@193.108.195.249) (Remote host closed the connection)
2026-06-28 09:38:19 +0000berke93_(~default@193.108.195.249)
2026-06-28 09:40:41 +0000ski(~ski@31-208-30-55.cust.bredband2.com)
2026-06-28 09:41:15 +0000chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 265 seconds)
2026-06-28 09:45:23 +0000__monty__(~toonn@user/toonn) toonn
2026-06-28 09:45:26 +0000ski(~ski@31-208-30-55.cust.bredband2.com) (Ping timeout: 256 seconds)
2026-06-28 09:46:43 +0000 <unworriedsafari> is it me or is hackage.haskell.org slow at the moment?
2026-06-28 09:47:32 +0000 <jaror> It's fine for me now (just browsing the packages)
2026-06-28 09:48:00 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-28 09:48:09 +0000chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-06-28 09:50:17 +0000 <unworriedsafari> ok it's alright again here as well
2026-06-28 10:09:30 +0000tcard__(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving)
2026-06-28 10:21:24 +0000ski(~ski@31-208-30-244.cust.bredband2.com)
2026-06-28 10:30:59 +0000wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2026-06-28 10:32:04 +0000karenw(~karenw@user/karenw) karenw
2026-06-28 10:34:23 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 252 seconds)
2026-06-28 10:34:27 +0000berke93__(~default@82.166.36.177)
2026-06-28 10:36:37 +0000berke93_(~default@193.108.195.249) (Read error: Connection reset by peer)
2026-06-28 10:37:38 +0000berke93___(~default@193.108.195.249)
2026-06-28 10:39:20 +0000ft(~ft@p4fc2a1bf.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2026-06-28 10:41:18 +0000berke93__(~default@82.166.36.177) (Ping timeout: 244 seconds)
2026-06-28 10:41:48 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-28 10:51:12 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2026-06-28 10:51:27 +0000ft(~ft@p508db997.dip0.t-ipconnect.de) ft
2026-06-28 10:56:39 +0000ft(~ft@p508db997.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2026-06-28 10:57:20 +0000ft(~ft@p3e9bc25c.dip0.t-ipconnect.de) ft
2026-06-28 11:02:51 +0000ft(~ft@p3e9bc25c.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2026-06-28 11:08:52 +0000ft(~ft@p3e9bccce.dip0.t-ipconnect.de) ft
2026-06-28 11:09:04 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 245 seconds)
2026-06-28 11:10:45 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-28 11:11:05 +0000puke(~puke@user/puke) (Read error: Connection reset by peer)
2026-06-28 11:11:22 +0000puke(~puke@user/puke) puke
2026-06-28 11:26:00 +0000skum(~skum@user/skum) skum
2026-06-28 11:31:14 +0000Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-06-28 11:32:07 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 264 seconds)
2026-06-28 11:33:13 +0000vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 252 seconds)
2026-06-28 11:34:06 +0000Lord_of_Life_Lord_of_Life
2026-06-28 11:35:01 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2026-06-28 11:35:56 +0000Digit`(~user@195.144.208.46.dyn.plus.net) (Ping timeout: 256 seconds)
2026-06-28 11:43:55 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 276 seconds)
2026-06-28 11:44:45 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-28 11:50:15 +0000Digit(~user@user/digit) Digit
2026-06-28 11:58:08 +0000tremon(~tremon@83-80-159-219.cable.dynamic.v4.ziggo.nl) tremon
2026-06-28 12:11:53 +0000weary-traveler(~user@user/user363627) user363627
2026-06-28 12:14:54 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-06-28 12:16:23 +0000fp(~Thunderbi@178-133-117-157.mobile.vf-ua.net) fp
2026-06-28 12:18:58 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer)
2026-06-28 12:20:28 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-06-28 12:21:26 +0000 <fp> So I've been trying to get my head around how =IO= works, so I decided that I would try making a basic implementation of it with Rust. How far, at the high level, is what I'm doing from what Haskell does? https://paste.rs/SIL3v.rs
2026-06-28 12:22:31 +0000 <fp> Of course, mine uses Rust std to do I/O instead of syscalls, but I'm interested in if the interface I've made is basically similar
2026-06-28 12:23:12 +0000 <mauke> can't be right
2026-06-28 12:23:51 +0000 <mauke> IO::ret(s).bind(|s| { ... }) is pointless; could just { ... } directly
2026-06-28 12:24:15 +0000 <mauke> (because 'return x >>= f' is 'f x')
2026-06-28 12:25:37 +0000 <fp> Sure, but I have to fake it a bit since I'm not interested in implementing the low level IO
2026-06-28 12:25:49 +0000 <mauke> fp: main = let { x :: IO (); x = putStrLn "hi" } in print (length [x, x, x, x, x]) >> x >> x
2026-06-28 12:26:08 +0000 <mauke> if you do the equivalent thing in rust, what does it output?
2026-06-28 12:26:38 +0000 <mauke> let me guess at the syntax
2026-06-28 12:28:06 +0000 <mauke> fn main() { let x = put_str_ln("hi"); print(???).bind(|_| { x.bind(|_| { x }) }); }
2026-06-28 12:28:10 +0000 <mauke> not sure about lists
2026-06-28 12:28:48 +0000 <mauke> actually, we can do better
2026-06-28 12:29:22 +0000 <mauke> main = let { x :: IO (); x = putStrLn "hi" } in print (length [putStrLn "a", putStrLn "b", putStrLn "c"]) >> x >> x
2026-06-28 12:30:02 +0000 <mauke> the correct output is "3\nhi\nhi\n"
2026-06-28 12:30:23 +0000 <fp> For the first one, it's "hi\n5hi\nhi"
2026-06-28 12:30:24 +0000 <mauke> I suspect yours would give "hi\na\nb\nc\n"
2026-06-28 12:31:33 +0000 <fp> But actually I had to cheat with the first one. I couldn't reuse the x variable for the two >>s, so I rewrote put_str_ln("hi")
2026-06-28 12:32:31 +0000rensenwxre(~fwam@user/fwam) fwam
2026-06-28 12:33:03 +0000 <fp> So without the cheat, it would've said "hi\n5\n"
2026-06-28 12:35:12 +0000weary-traveler(~user@user/user363627) (Quit: Konversation terminated!)
2026-06-28 12:35:48 +0000weary-traveler(~user@user/user363627) user363627
2026-06-28 12:39:34 +0000 <fp> > I suspect yours would give "hi\na\nb\nc\n"
2026-06-28 12:39:34 +0000 <fp> Yeah, or "hi\na\nb\nc3", but close enough
2026-06-28 12:39:35 +0000 <lambdabot> Data constructor not in scope:
2026-06-28 12:39:35 +0000 <lambdabot> I :: t0 -> t1 -> t2 -> t3 -> String -> tVariable not in scope: suspectVari...
2026-06-28 12:43:30 +0000 <fp> So I guess I need to make a structure of closures and run it with an explicit command, like Io::ret(...).bind(...).run(). But Rust doesn't make that easy...
2026-06-28 12:45:32 +0000 <mauke> I don't know rust, but I just prototyped it in perl: https://pt.gayr.at/p/akEXWseeFyQMI20qKUFlL479SHI
2026-06-28 12:46:08 +0000 <mauke> (no 'print' because we're taking advantage of perl's implicit 'show')
2026-06-28 12:47:36 +0000Pozyomka(~pyon@user/pyon) (Quit: test)
2026-06-28 12:51:16 +0000Pozyomka(~pyon@user/pyon) pyon
2026-06-28 12:52:59 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2026-06-28 12:53:05 +0000fp(~Thunderbi@178-133-117-157.mobile.vf-ua.net) (Ping timeout: 256 seconds)
2026-06-28 12:54:47 +0000traxex(traxex@user/traxex) traxex
2026-06-28 12:58:26 +0000fp(~Thunderbi@46-133-26-225.mobile.vf-ua.net) fp
2026-06-28 13:00:03 +0000 <fp> mauke: Ok yeah that's basically what I tried at first. Unfortunately, Rust makes extending the lifetime of a capturing closure a major PITA
2026-06-28 13:00:57 +0000 <fp> Maybe if I bring in a garbage collector it'll be easier, but I'm not sure it's possible to implement this otherwise
2026-06-28 13:01:15 +0000 <tomsmeding> fp: wrap everything everywhere in Rc<>?
2026-06-28 13:01:33 +0000 <tomsmeding> then as long as you don't create cycles, you get a "GC" like Haskell has
2026-06-28 13:03:25 +0000 <fp> I guess if I force users to put everything they want returned into an Rc first, that could work
2026-06-28 13:04:26 +0000 <tomsmeding> you're trying to simulate a language that's maximally-YOLO with memory management (pure Haskell) in one that's unusually precise about memory management
2026-06-28 13:06:59 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 245 seconds)
2026-06-28 13:07:19 +0000 <tomsmeding> fp: "struct Io<T>(T);" "/// A computation that, when performed, does some I/O before returning a value of type `T`."
2026-06-28 13:07:23 +0000 <tomsmeding> where's the computation? This is just a T
2026-06-28 13:08:10 +0000 <tomsmeding> try `struct Io<T>(Fn() -> T);`
2026-06-28 13:08:25 +0000 <fp> Yes and that is the root of all evil
2026-06-28 13:08:41 +0000 <tomsmeding> because of lifetimes?
2026-06-28 13:08:51 +0000 <tomsmeding> add .clone() and Rc<> until it works
2026-06-28 13:09:09 +0000 <tomsmeding> lifetimes are 100% distracting from the mechanics of IO :p
2026-06-28 13:10:34 +0000 <fp> That actually doesn't work because Fn() -> T is a DST, so you need to Box (or just &, but I won't) it and use dyn, or use a function pointer (but that means capturing closures aren't allowed). And even with Rc and clone, you still run into lifetime issues
2026-06-28 13:11:45 +0000 <fp> like in `fn ret(t: Rc<T>) -> Io<T> { Io(Rc::new(|| t.clone())) }`, t doesn't have a long enough lifetime
2026-06-28 13:12:51 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-28 13:13:54 +0000 <tomsmeding> also not if you `move || t`?
2026-06-28 13:14:23 +0000 <tomsmeding> and yes my rust is rusty, add Box<> as necessary
2026-06-28 13:14:42 +0000 <fp> No, move doesn't work
2026-06-28 13:15:28 +0000 <tomsmeding> what precisely is the error? ret() owns t, right, so it should be able to move it into the closure
2026-06-28 13:16:23 +0000 <fp> Ultimately, my goal isn't to emulate Haskell per se, but to have a composable Io interface in Rust. For context, I'm testing this out to see if I could make an API for an industrial fieldbus this way
2026-06-28 13:16:34 +0000 <fp> "T may not live long enough"
2026-06-28 13:17:27 +0000 <tomsmeding> I think this experience is enough to show that Haskell's way of representing an IO computation -- using closures -- is not usable in Rust :p
2026-06-28 13:17:38 +0000 <fp> Yeah I'm seeing that
2026-06-28 13:17:46 +0000 <tomsmeding> you might have more luck with the free monad encoding
2026-06-28 13:18:06 +0000 <tomsmeding> hm, no that still has closures everywhere
2026-06-28 13:18:34 +0000 <fp> I guess building a stack machine might be more reasonable
2026-06-28 13:18:54 +0000 <tomsmeding> what Haskell's "IO" gives you is a data type for describing arbitrary side-effectful computations in a non-side-effectful language
2026-06-28 13:18:56 +0000 <tomsmeding> is that what you need?
2026-06-28 13:18:57 +0000 <fp> Or generally like an interpreter
2026-06-28 13:23:33 +0000 <fp> What I'm imagining is that a user can describe a complex IO action and that can be dispatched to the IO device or to a server that does the IO and they get back either the expected data or a rich error
2026-06-28 13:24:42 +0000 <tomsmeding> if you want to dispatch the IO computation to a device, and you describe IO like Haskell does, you'll need to also run arbitrary Rust code on the device
2026-06-28 13:24:52 +0000 <tomsmeding> and serialise, transfer and deserialise the closures
2026-06-28 13:25:23 +0000 <fp> Sure
2026-06-28 13:25:26 +0000 <tomsmeding> because an arbitrary IO action contains calls to primitive IO operations as well as "pure" glue code that decides what next action to take
2026-06-28 13:25:44 +0000 <hc> Hmm, not having read the backlog thoroughly, but isn't that pretty much what rust's async/"Futures" do? Wrap IO in closures?
2026-06-28 13:26:00 +0000 <hc> (Not that I'm saying I particularly like async rust)
2026-06-28 13:26:16 +0000 <tomsmeding> I feel like this is wrapping closures in IO instead of IO in closures
2026-06-28 13:26:50 +0000 <tomsmeding> fp: can you just dispatch a single primitive IO action to the device, or do you really need to dispatch a larger program?
2026-06-28 13:27:18 +0000 <tomsmeding> because then the first thing I'd think about is "what kind of computation, aside from the precise representation of the IO operations, can I run on this device"
2026-06-28 13:27:45 +0000 <tomsmeding> and what kind of computation do you actually want to run
2026-06-28 13:27:55 +0000chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 276 seconds)
2026-06-28 13:27:57 +0000 <fp> That is a good question to ask, one that I should really consider
2026-06-28 13:28:10 +0000 <tomsmeding> an intermediate version that is much more feasible is defining a little language that you have an interpreter for on the device
2026-06-28 13:28:21 +0000 <tomsmeding> (I think you already suggested this)
2026-06-28 13:28:42 +0000chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-06-28 13:28:55 +0000 <tomsmeding> that means you have to also write the stuff in the .bind() closures in your little language, but the payoff is that the thing you send to the device, and what you execute there, is just a regular old data type
2026-06-28 13:29:05 +0000 <tomsmeding> which you can serde etc
2026-06-28 13:29:39 +0000 <tomsmeding> (I'm assuming "device" here is a separate piece of hardware that doesn't necessarily share a CPU architecture with the "main" computer)
2026-06-28 13:30:01 +0000berke93___(~default@193.108.195.249) (Ping timeout: 266 seconds)
2026-06-28 13:30:58 +0000 <fp> Yeah like I have some programs that are running with this fieldbus IO, but it's very timing sensitive, so I really need to move it to a different process (though same machine is probably fine). But then of course I have to develop a way to command IO actions of the other process, which is how I got here
2026-06-28 13:31:34 +0000 <fp> And also IO feels like magic sometimes and I wanted to understand it better
2026-06-28 13:31:53 +0000chromoblob(~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer)
2026-06-28 13:33:09 +0000chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-06-28 13:33:10 +0000 <tomsmeding> if it's a different process on the same machine, I'd seriously consider if there is way to group your computations into "pre-made programs" that can be triggered by the commanding process as a whole
2026-06-28 13:33:22 +0000 <fp> The magic is less now, though lazy evaluation still feels crazy to me. That you can make a repl with =getContents >>= \contents -> putStrLn $ (unlines . map show . map eval . lines) contents= is bonkers