2026/02/09

2026-02-09 00:01:10 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-02-09 00:01:36 +0100 <EvanR> returning an IO action is basically free monad if you think IO is like a huge free monad
2026-02-09 00:02:19 +0100 <EvanR> if the semantic value is a command to be executed... then the command data type or the command action itself could both be considered that
2026-02-09 00:02:48 +0100krei-se(~krei-se@p200300f1cfff3e880001000000000001.dip0.t-ipconnect.de) krei-se
2026-02-09 00:03:06 +0100tromp(~textual@2001:1c00:3487:1b00:199:803c:4cc4:404b) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-02-09 00:03:49 +0100 <EvanR> parse don't validate violation seems to be a different situation, where you validate something and then later run another parser on it
2026-02-09 00:04:03 +0100 <EvanR> the original data
2026-02-09 00:07:02 +0100 <chromoblob> why isn't IO a free monad actually?
2026-02-09 00:07:31 +0100 <ncf> can't pattern match on it
2026-02-09 00:07:36 +0100 <EvanR> performance, and or "we didn't think of it"
2026-02-09 00:08:13 +0100xff0x(~xff0x@2405:6580:b080:900:cadf:d9b9:dcb4:a899) (Quit: xff0x)
2026-02-09 00:10:14 +0100 <mauke> is this that "final tagless" thing
2026-02-09 00:10:16 +0100 <chromoblob> ncf: case putStr "123" of PutStr "123" -> ...
2026-02-09 00:10:47 +0100 <ncf> oh you mean from a design perspective
2026-02-09 00:11:27 +0100 <EvanR> the IO system predates free monads being popularized by the blogosphere
2026-02-09 00:11:49 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 00:13:00 +0100xff0x(~xff0x@2405:6580:b080:900:94ad:d9ab:f90:90c7)
2026-02-09 00:15:52 +0100twb(~twb@user/twb) twb
2026-02-09 00:16:31 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-02-09 00:24:24 +0100 <geekosaur> also I think it doesn't extend nicely to threads?
2026-02-09 00:26:55 +0100 <dolio> There's multiple problems with it. What about FFI?
2026-02-09 00:27:18 +0100 <geekosaur> that too, yes
2026-02-09 00:27:37 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 00:27:44 +0100 <geekosaur> although I can think of ways to make it work, especially given that FFI already doesn't really handle varargs
2026-02-09 00:29:33 +0100 <dolio> I'm sure there are ways to do it, but the question is why you would, when being a free monad is likely not valuable at all.
2026-02-09 00:29:56 +0100 <dolio> Most likely the opposite.
2026-02-09 00:30:49 +0100 <dolio> IO specifically, that is.
2026-02-09 00:32:11 +0100 <geekosaur> tbh I've always considered that approach to be more useful conceptually than implementationally
2026-02-09 00:33:34 +0100 <dolio> If you're going to write multiple interpreters for one, then it might be worth it. But you want IO to be as low overhead as possible, bascially.
2026-02-09 00:34:07 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-09 00:45:38 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 00:47:20 +0100rainbyte(~rainbyte@186.22.19.214) rainbyte
2026-02-09 00:50:11 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-09 00:53:18 +0100oskarw(~user@user/oskarw) (Ping timeout: 256 seconds)
2026-02-09 01:01:24 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 01:04:14 +0100_JusSx_(~username@37.163.117.200) (Ping timeout: 244 seconds)
2026-02-09 01:06:18 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-09 01:09:11 +0100forell(~forell@user/forell) forell
2026-02-09 01:17:11 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 01:18:41 +0100trickard(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-09 01:18:55 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-09 01:20:07 +0100humasect_(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-02-09 01:21:58 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-02-09 01:24:57 +0100emmanuelux(~em@user/emmanuelux) (Read error: Connection reset by peer)
2026-02-09 01:28:16 +0100emmanuelux(~em@user/emmanuelux) emmanuelux
2026-02-09 01:33:02 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 01:35:05 +0100Tuplanolla(~Tuplanoll@85-156-32-207.elisa-laajakaista.fi) (Ping timeout: 250 seconds)
2026-02-09 01:38:43 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-09 01:49:01 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 01:50:13 +0100xff0x(~xff0x@2405:6580:b080:900:94ad:d9ab:f90:90c7) (Ping timeout: 244 seconds)
2026-02-09 01:53:12 +0100 <ski> EvanR : with the former, you can do alternative analyses/semantics (perhaps sending the command to a different process, or pretty-printing it, or analyzing commands for potential trouble interaction, &c.)
2026-02-09 01:53:40 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-02-09 01:54:19 +0100 <ski> (cf. using a `String' as an error message, vs. a data type. with the latter, you can e.g. localize it to different languages, portray it differently for different UIs, &c.)
2026-02-09 01:54:35 +0100 <ski> @quote stark
2026-02-09 01:54:35 +0100 <lambdabot> AlanPerlis says: The string is a stark data structure and everywhere it is passed there is much duplication of process. It is a perfect vehicle for hiding information.
2026-02-09 02:01:17 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 02:03:59 +0100tremon(~tremon@83.80.159.219) (Quit: getting boxed in)
2026-02-09 02:14:03 +0100 <jreicher> String is almost not a type at all.
2026-02-09 02:24:05 +0100omidmash6(~omidmash@user/omidmash) omidmash
2026-02-09 02:26:36 +0100omidmash(~omidmash@user/omidmash) (Ping timeout: 265 seconds)
2026-02-09 02:26:36 +0100omidmash6omidmash
2026-02-09 02:26:43 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-09 02:26:56 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-09 02:28:09 +0100Square2(~Square@user/square) (Ping timeout: 260 seconds)
2026-02-09 02:35:35 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-09 02:42:00 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2026-02-09 02:42:30 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Client Quit)
2026-02-09 02:44:20 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 252 seconds)
2026-02-09 02:45:01 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2026-02-09 02:47:02 +0100emmanuelux(~em@user/emmanuelux) (Read error: Connection reset by peer)
2026-02-09 02:47:24 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 02:49:42 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2026-02-09 02:50:19 +0100emmanuelux(~em@user/emmanuelux) emmanuelux
2026-02-09 02:52:32 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-09 02:53:42 +0100emmanuelux_(~em@2a01cb011051ddce36cff6fffefa7e31.ipv6.abo.wanadoo.fr)
2026-02-09 02:53:43 +0100emmanuelux(~em@user/emmanuelux) (Read error: Connection reset by peer)
2026-02-09 02:59:27 +0100twb(~twb@user/twb) (Read error: Connection reset by peer)
2026-02-09 02:59:49 +0100twb(~twb@user/twb) twb
2026-02-09 03:00:55 +0100otto_s(~user@p5de2f96c.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2026-02-09 03:01:45 +0100weary-traveler(~user@user/user363627) user363627
2026-02-09 03:02:23 +0100otto_s(~user@p5b044c1a.dip0.t-ipconnect.de)
2026-02-09 03:02:45 +0100ljdarj(~Thunderbi@user/ljdarj) (Quit: ljdarj)
2026-02-09 03:02:50 +0100user363627(~user@user/user363627) user363627
2026-02-09 03:03:30 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 03:03:35 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Quit: xff0x)
2026-02-09 03:03:48 +0100emmanuelux(~em@user/emmanuelux) emmanuelux
2026-02-09 03:04:06 +0100emmanuelux_(~em@2a01cb011051ddce36cff6fffefa7e31.ipv6.abo.wanadoo.fr) (Ping timeout: 244 seconds)
2026-02-09 03:06:02 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2026-02-09 03:07:06 +0100weary-traveler(~user@user/user363627) (Ping timeout: 244 seconds)
2026-02-09 03:08:08 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-09 03:10:26 +0100emmanuelux(~em@user/emmanuelux) (Read error: Connection reset by peer)
2026-02-09 03:13:48 +0100emmanuelux(~em@user/emmanuelux) emmanuelux
2026-02-09 03:17:49 +0100 <ncf> huh?
2026-02-09 03:18:53 +0100twb(~twb@user/twb) (rcirc on GNU Emacs 30.1)
2026-02-09 03:19:17 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 03:26:47 +0100 <jreicher> I just mean it's often a bucket for unstructured data. Some uses I've seen feel more like the developer not bothering to figure out the type rather than really determining it's a String.
2026-02-09 03:26:56 +0100kimiamania4(~b4b260c9@user/kimiamania) (Quit: Ping timeout (120 seconds))
2026-02-09 03:27:01 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-02-09 03:27:17 +0100kimiamania4(~b4b260c9@user/kimiamania) kimiamania
2026-02-09 03:29:22 +0100 <geekosaur>
2026-02-09 03:30:02 +0100 <geekosaur> or just not thinking that, y'know, I'd prefer not to have to parse an error code out of a possibly localized string
2026-02-09 03:33:37 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-09 03:33:51 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-09 03:34:09 +0100geekosaurahem Haskell Report…
2026-02-09 03:34:47 +0100 <geekosaur> (at least ghc has internal APIs that expose `IOError` internals to get the useful stuff)
2026-02-09 03:38:17 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 03:40:48 +0100 <geekosaur> sorry, `IOException`. https://hackage-content.haskell.org/package/base-4.22.0.0/docs/GHC-IO-Exception.html#t:IOException
2026-02-09 03:44:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-09 03:50:04 +0100gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2026-02-09 03:50:45 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2026-02-09 03:56:18 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 03:56:34 +0100omidmash(~omidmash@user/omidmash) (Quit: The Lounge - https://thelounge.chat)
2026-02-09 04:00:20 +0100omidmash(~omidmash@user/omidmash) omidmash
2026-02-09 04:01:28 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-02-09 04:02:56 +0100emmanuelux(~em@user/emmanuelux) (Read error: Connection reset by peer)
2026-02-09 04:06:12 +0100emmanuelux(~em@user/emmanuelux) emmanuelux
2026-02-09 04:12:04 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 04:13:44 +0100emmanuelux_(~em@2a01cb011051ddce36cff6fffefa7e31.ipv6.abo.wanadoo.fr)
2026-02-09 04:13:51 +0100emmanuelux_(~em@2a01cb011051ddce36cff6fffefa7e31.ipv6.abo.wanadoo.fr) (Read error: Connection reset by peer)
2026-02-09 04:14:22 +0100emmanuelux(~em@user/emmanuelux) (Ping timeout: 244 seconds)
2026-02-09 04:16:51 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-09 04:17:10 +0100emmanuelux(~em@user/emmanuelux) emmanuelux
2026-02-09 04:23:50 +0100emmanuelux_(~em@92-184-96-253.mobile.fr.orangecustomers.net)
2026-02-09 04:24:05 +0100emmanuelux(~em@user/emmanuelux) (Ping timeout: 244 seconds)
2026-02-09 04:25:23 +0100machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 250 seconds)
2026-02-09 04:27:49 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 04:33:19 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-09 04:36:18 +0100humasect_(~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
2026-02-09 04:36:30 +0100Pozyomka(~pyon@user/pyon) (Quit: brb)
2026-02-09 04:40:13 +0100Pozyomka(~pyon@user/pyon) pyon
2026-02-09 04:43:37 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 04:48:28 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-09 04:59:25 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 05:04:23 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
2026-02-09 05:15:14 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 05:22:13 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-09 05:23:29 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 05:28:42 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-02-09 05:34:16 +0100davl_(~davl@207.154.228.18) (Quit: ...)
2026-02-09 05:36:45 +0100 <EvanR> "this is not a type" :: String
2026-02-09 05:39:15 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 05:43:23 +0100davl(~davl@207.154.228.18) davl
2026-02-09 05:44:10 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-09 05:46:22 +0100ski. o O ( "Ceci n'est pas une type." )
2026-02-09 05:46:53 +0100jmcantrell(~weechat@user/jmcantrell) (Quit: WeeChat 4.8.1)
2026-02-09 05:47:57 +0100 <geekosaur> (thank you 😛 )
2026-02-09 05:54:18 +0100rekahsoft(~rekahsoft@bras-base-orllon1103w-grc-20-76-67-111-168.dsl.bell.ca) (Remote host closed the connection)
2026-02-09 05:55:16 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 05:56:17 +0100wickedjargon(~user@2605:8d80:5430:714a:f4ec:3ef3:84f4:80f3) wickedjargon
2026-02-09 06:00:43 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-02-09 06:04:50 +0100mange(~mange@user/mange) (Remote host closed the connection)
2026-02-09 06:07:24 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-02-09 06:11:31 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 06:16:18 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-09 06:24:29 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 06:29:16 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-02-09 06:34:49 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 264 seconds)
2026-02-09 06:40:16 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 06:45:19 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-09 06:50:54 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-09 06:51:06 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-09 06:54:15 +0100wickedjargon(~user@2605:8d80:5430:714a:f4ec:3ef3:84f4:80f3) (Remote host closed the connection)
2026-02-09 06:56:02 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 06:57:40 +0100anpad(~pandeyan@user/anpad) (Quit: ZNC 1.10.1 - https://znc.in)
2026-02-09 06:58:14 +0100emaczen(~user@user/emaczen) (Ping timeout: 260 seconds)
2026-02-09 06:58:52 +0100anpad(~pandeyan@user/anpad) anpad
2026-02-09 07:00:58 +0100jreicher(~joelr@user/jreicher) (Quit: In transit)
2026-02-09 07:02:53 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-09 07:02:53 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-02-09 07:03:06 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-09 07:14:05 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 07:15:33 +0100michalz(~michalz@185.246.207.200)
2026-02-09 07:16:29 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-02-09 07:18:31 +0100takuan(~takuan@d8D86B9E9.access.telenet.be)
2026-02-09 07:19:14 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-02-09 07:20:08 +0100wickedjargon(~user@2605:8d80:5430:2d51:a829:6019:d43:6789) wickedjargon
2026-02-09 07:25:28 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 07:30:32 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-02-09 07:35:15 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 244 seconds)
2026-02-09 07:42:25 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 07:43:59 +0100Enrico63(~Enrico63@host-79-27-153-69.retail.telecomitalia.it) Enrico63
2026-02-09 07:47:32 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-02-09 07:57:44 +0100oneeyedalien(~oneeyedal@user/oneeyedalien) oneeyedalien
2026-02-09 07:58:10 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 08:03:19 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-09 08:05:23 +0100oneeyedalien(~oneeyedal@user/oneeyedalien) (Quit: Leaving)
2026-02-09 08:11:28 +0100Enrico63(~Enrico63@host-79-27-153-69.retail.telecomitalia.it) (Quit: Client closed)
2026-02-09 08:12:40 +0100jreicher(~joelr@user/jreicher) jreicher
2026-02-09 08:13:57 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 08:15:36 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-09 08:15:50 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-09 08:19:07 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-02-09 08:26:28 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 08:31:44 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-02-09 08:32:25 +0100Enrico63(~Enrico63@host-79-27-153-69.retail.telecomitalia.it) Enrico63
2026-02-09 08:39:30 +0100comonad(~comonad@pd9e072e5.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2026-02-09 08:40:23 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
2026-02-09 08:40:30 +0100comonad(~comonad@p200300d02722ae00dce4ce9451b59974.dip0.t-ipconnect.de)
2026-02-09 08:40:52 +0100Enrico63(~Enrico63@host-79-27-153-69.retail.telecomitalia.it) (Quit: Client closed)
2026-02-09 08:42:32 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 08:43:19 +0100ft(~ft@p508db4c0.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2026-02-09 08:47:35 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-09 08:47:41 +0100eason(~eason@user/eason) eason
2026-02-09 08:51:25 +0100 <eason> Hello
2026-02-09 08:51:35 +0100 <eason> Wow
2026-02-09 08:51:41 +0100 <eason> It's my first time using this
2026-02-09 08:54:40 +0100 <ski> hello eason
2026-02-09 08:55:21 +0100tromp(~textual@2001:1c00:3487:1b00:199:803c:4cc4:404b)
2026-02-09 08:55:26 +0100 <ski> first time using IRC ?
2026-02-09 09:02:33 +0100sord937(~sord937@gateway/tor-sasl/sord937) sord937
2026-02-09 09:06:41 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2026-02-09 09:14:13 +0100bliminse(~bliminse@user/bliminse) (Quit: leaving)
2026-02-09 09:16:21 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 09:17:19 +0100bliminse(~bliminse@user/bliminse) bliminse
2026-02-09 09:21:10 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-02-09 09:25:11 +0100KindFoxo(~KindFoxo@user/KindoFoxo) KindoFoxo
2026-02-09 09:25:52 +0100GdeVolpiano(~GdeVolpia@user/GdeVolpiano) (Quit: WeeChat 4.7.2)
2026-02-09 09:27:29 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 09:27:59 +0100GdeVolpiano(~GdeVolpia@user/GdeVolpiano) GdeVolpiano
2026-02-09 09:32:32 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-09 09:35:21 +0100trickard_trickard
2026-02-09 09:41:42 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2026-02-09 09:42:23 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-02-09 09:43:20 +0100eason(~eason@user/eason) (Quit: leaving)
2026-02-09 09:43:31 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 09:45:29 +0100emmanuelux_(~em@92-184-96-253.mobile.fr.orangecustomers.net) (Quit: bye)
2026-02-09 09:48:06 +0100akegalj(~akegalj@141-136-187-111.dsl.iskon.hr) akegalj
2026-02-09 09:48:13 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
2026-02-09 09:49:33 +0100housemate(~housemate@202.7.248.67) (Quit: https://ineedsomeacidtocalmmedown.space/)
2026-02-09 09:53:01 +0100housemate(~housemate@202.7.248.67) housemate
2026-02-09 09:59:17 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 10:04:19 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-02-09 10:06:40 +0100trickard(~trickard@cpe-61-98-47-163.wireline.com.au) (Ping timeout: 255 seconds)
2026-02-09 10:07:06 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-09 10:12:52 +0100trickard_trickard
2026-02-09 10:14:14 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 10:16:48 +0100trickard(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-09 10:17:46 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-09 10:20:32 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-02-09 10:20:39 +0100oskarw(~user@user/oskarw) oskarw
2026-02-09 10:22:01 +0100oskarw(~user@user/oskarw) (Remote host closed the connection)
2026-02-09 10:22:44 +0100oskarw(~user@user/oskarw) oskarw
2026-02-09 10:28:29 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 10:29:46 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-09 10:30:00 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-09 10:33:55 +0100Inline(~User@2a02:908:1246:26e0:8c1d:56bb:e491:7d2d) (Ping timeout: 246 seconds)
2026-02-09 10:36:10 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-02-09 10:47:49 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 10:52:31 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-09 10:57:18 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2026-02-09 11:03:38 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 11:08:23 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
2026-02-09 11:09:17 +0100Googulator(~Googulato@2a01-036d-0106-216f-e9c4-b0ef-4e86-2425.pool6.digikabel.hu) (Quit: Client closed)
2026-02-09 11:09:34 +0100Googulator(~Googulato@2a01-036d-0106-216f-e9c4-b0ef-4e86-2425.pool6.digikabel.hu)
2026-02-09 11:19:23 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 11:19:33 +0100Inline(~User@2a02:908:1246:26e0:3c5:3b59:25f5:429d) Inline
2026-02-09 11:21:39 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 244 seconds)
2026-02-09 11:23:11 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
2026-02-09 11:23:58 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-02-09 11:25:57 +0100fp(~Thunderbi@2001-14ba-6e24-3000--198.rev.dnainternet.fi) fp
2026-02-09 11:29:29 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 11:35:07 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-09 11:37:37 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-09 11:37:51 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-09 11:38:00 +0100srazkvt(~sarah@user/srazkvt) srazkvt
2026-02-09 11:42:57 +0100wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2026-02-09 11:45:37 +0100merijn(~merijn@62.45.136.136) merijn
2026-02-09 11:49:19 +0100__monty__(~toonn@user/toonn) toonn
2026-02-09 11:49:19 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 260 seconds)
2026-02-09 11:50:39 +0100merijn(~merijn@62.45.136.136) (Ping timeout: 265 seconds)
2026-02-09 11:57:24 +0100Pozyomka(~pyon@user/pyon) (Quit: brb)
2026-02-09 12:01:17 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 12:02:10 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au) (Remote host closed the connection)
2026-02-09 12:03:23 +0100trickard(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-09 12:03:58 +0100Guest29(~Guest29@2405:201:3021:f843:f8ae:a38d:83c7:bbca)
2026-02-09 12:04:16 +0100Pozyomka(~pyon@user/pyon) pyon
2026-02-09 12:06:22 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-02-09 12:09:59 +0100cyphase(~cyphase@user/cyphase) (Quit: cyphase.com)
2026-02-09 12:10:16 +0100cyphase(~cyphase@user/cyphase) cyphase
2026-02-09 12:10:22 +0100Pozyomka(~pyon@user/pyon) (Quit: brb)
2026-02-09 12:16:43 +0100xff0x(~xff0x@2405:6580:b080:900:a304:44e0:ba72:c7aa)
2026-02-09 12:17:04 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 12:19:15 +0100Guest29(~Guest29@2405:201:3021:f843:f8ae:a38d:83c7:bbca) (Ping timeout: 272 seconds)
2026-02-09 12:24:18 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-02-09 12:27:22 +0100bggd_(~bgg@2a01:e0a:fd5:f510:7c7b:26be:3fe9:d994) (Remote host closed the connection)
2026-02-09 12:30:45 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 12:34:11 +0100GdeVolpiano(~GdeVolpia@user/GdeVolpiano) (Read error: Connection reset by peer)
2026-02-09 12:34:28 +0100GdeVolpiano(~GdeVolpia@user/GdeVolpiano) GdeVolpiano
2026-02-09 12:35:58 +0100wickedjargon(~user@2605:8d80:5430:2d51:a829:6019:d43:6789) (Ping timeout: 256 seconds)
2026-02-09 12:35:59 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-02-09 12:42:21 +0100KindFoxo(~KindFoxo@user/KindoFoxo) (Read error: Connection reset by peer)
2026-02-09 12:43:07 +0100KindFoxo(~KindFoxo@user/KindoFoxo) KindoFoxo
2026-02-09 12:45:16 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 12:50:04 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-02-09 12:50:13 +0100chele(~chele@user/chele) chele
2026-02-09 12:53:54 +0100trickard(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-09 12:54:08 +0100trickard(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-09 13:01:09 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 13:01:48 +0100KindFoxo(~KindFoxo@user/KindoFoxo) (Remote host closed the connection)
2026-02-09 13:02:25 +0100KindFoxo(~KindFoxo@user/KindoFoxo) KindoFoxo
2026-02-09 13:04:06 +0100Pozyomka(~pyon@user/pyon) pyon
2026-02-09 13:05:49 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
2026-02-09 13:07:48 +0100KindFoxo(~KindFoxo@user/KindoFoxo) (Read error: Connection reset by peer)
2026-02-09 13:08:37 +0100KindFoxo(~KindFoxo@user/KindoFoxo) KindoFoxo
2026-02-09 13:16:54 +0100merijn(~merijn@62.45.136.136) merijn
2026-02-09 13:19:35 +0100Inline(~User@2a02:908:1246:26e0:3c5:3b59:25f5:429d) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/)
2026-02-09 13:19:36 +0100wickedjargon(~user@2605:8d80:5430:38af:2964:3737:2954:46b8) wickedjargon
2026-02-09 13:20:44 +0100wickedjargon(~user@2605:8d80:5430:38af:2964:3737:2954:46b8) (Remote host closed the connection)
2026-02-09 13:21:01 +0100wickedjargon(~user@2605:8d80:5430:38af:2964:3737:2954:46b8) wickedjargon
2026-02-09 13:21:04 +0100cyphase(~cyphase@user/cyphase) (Ping timeout: 255 seconds)
2026-02-09 13:24:42 +0100merijn(~merijn@62.45.136.136) (Ping timeout: 256 seconds)
2026-02-09 13:30:51 +0100cyphase(~cyphase@user/cyphase) cyphase
2026-02-09 13:31:29 +0100merijn(~merijn@62.45.136.136) merijn
2026-02-09 13:36:49 +0100merijn(~merijn@62.45.136.136) (Ping timeout: 255 seconds)
2026-02-09 13:41:53 +0100trickard(~trickard@cpe-61-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-09 13:42:07 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-09 13:45:48 +0100 <yin> either way, welcome to the deep
2026-02-09 13:47:30 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 13:52:31 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-09 13:58:23 +0100Square(~Square4@user/square) Square
2026-02-09 14:05:21 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 14:12:16 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-02-09 14:12:53 +0100emaczen(~user@user/emaczen) emaczen
2026-02-09 14:24:07 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 14:29:05 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-02-09 14:32:29 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 14:37:19 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-09 14:38:03 +0100cipherrot(~jez@user/petrichor) petrichor
2026-02-09 14:38:25 +0100petrichor(~jez@user/petrichor) (Ping timeout: 264 seconds)
2026-02-09 14:42:34 +0100wickedjargon(~user@2605:8d80:5430:38af:2964:3737:2954:46b8) (Ping timeout: 260 seconds)
2026-02-09 14:42:54 +0100cipherrot(~jez@user/petrichor) (Ping timeout: 256 seconds)
2026-02-09 14:44:43 +0100YoungFrog(~youngfrog@2a02:a03f:ca07:f900:10c6:8cef:b7df:b252) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in)
2026-02-09 14:44:50 +0100kuribas(~user@2a02-1810-2825-6000-aa26-243-5761-7363.ip6.access.telenet.be) kuribas
2026-02-09 14:45:04 +0100YoungFrog(~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) youngfrog
2026-02-09 14:46:44 +0100acidjnk(~acidjnk@p200300d6e700e589bc3447690a0a9402.dip0.t-ipconnect.de) acidjnk
2026-02-09 14:48:31 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 14:52:18 +0100p3n(~p3n@217.198.124.246) (Quit: ZNC 1.10.1 - https://znc.in)
2026-02-09 14:53:25 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-09 14:59:06 +0100p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) p3n
2026-02-09 14:59:56 +0100Googulator(~Googulato@2a01-036d-0106-216f-e9c4-b0ef-4e86-2425.pool6.digikabel.hu) (Quit: Client closed)
2026-02-09 15:00:11 +0100Googulator(~Googulato@2a01-036d-0106-216f-e9c4-b0ef-4e86-2425.pool6.digikabel.hu)
2026-02-09 15:01:12 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2026-02-09 15:01:37 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2026-02-09 15:03:47 +0100rekahsoft(~rekahsoft@76.67.111.168) rekahsoft
2026-02-09 15:04:00 +0100hadronizeddumdum
2026-02-09 15:04:18 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 15:09:18 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-02-09 15:12:18 +0100Katarushisu6(~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) (Quit: Ping timeout (120 seconds))
2026-02-09 15:12:40 +0100Katarushisu6(~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net)
2026-02-09 15:13:21 +0100rainbyte(~rainbyte@186.22.19.214) (Read error: Connection reset by peer)
2026-02-09 15:14:30 +0100rainbyte(~rainbyte@186.22.19.214) rainbyte
2026-02-09 15:15:47 +0100srazkvt(~sarah@user/srazkvt) (Quit: Konversation terminated!)
2026-02-09 15:20:05 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 15:25:12 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-02-09 15:27:31 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au) (Ping timeout: 255 seconds)
2026-02-09 15:28:02 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au)
2026-02-09 15:33:29 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 15:38:04 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-02-09 15:40:25 +0100tromp(~textual@2001:1c00:3487:1b00:199:803c:4cc4:404b) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-02-09 15:49:14 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2026-02-09 15:49:16 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 15:55:11 +0100petrichor(~jez@user/petrichor) petrichor
2026-02-09 15:56:00 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-09 15:59:53 +0100trickard__(~trickard@cpe-58-98-47-163.wireline.com.au)
2026-02-09 16:00:17 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 16:00:44 +0100trickard_(~trickard@cpe-61-98-47-163.wireline.com.au) (Ping timeout: 260 seconds)
2026-02-09 16:01:07 +0100kimiamania4(~b4b260c9@user/kimiamania) (Quit: PegeLinux)
2026-02-09 16:01:53 +0100kimiamania4(~b4b260c9@user/kimiamania) kimiamania
2026-02-09 16:02:43 +0100mangoiv(~mangoiv@user/mangoiv) (Quit: The Lounge - https://thelounge.chat)
2026-02-09 16:03:07 +0100mangoiv(~mangoiv@2a01:4f9:c012:6c0e::)
2026-02-09 16:03:20 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2026-02-09 16:04:48 +0100mangoiv(~mangoiv@2a01:4f9:c012:6c0e::) (Changing host)
2026-02-09 16:04:48 +0100mangoiv(~mangoiv@user/mangoiv) mangoiv
2026-02-09 16:05:13 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
2026-02-09 16:05:21 +0100ar3ph9(~ar3ph@user/ar3ph) ar3ph
2026-02-09 16:08:32 +0100Katarushisu63(~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net)
2026-02-09 16:08:54 +0100ar3ph(~ar3ph@user/ar3ph) (Ping timeout: 260 seconds)
2026-02-09 16:08:54 +0100ar3ph9ar3ph
2026-02-09 16:09:03 +0100Katarushisu6(~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) (Read error: Connection reset by peer)
2026-02-09 16:09:03 +0100Katarushisu63Katarushisu6
2026-02-09 16:16:04 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 16:17:21 +0100tromp(~textual@2001:1c00:3487:1b00:199:803c:4cc4:404b)
2026-02-09 16:20:56 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-09 16:28:54 +0100bggd_(~bgg@2a01:e0a:fd5:f510:870e:b6e1:18ac:1926)
2026-02-09 16:31:51 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 16:39:38 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-02-09 16:40:10 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 265 seconds)
2026-02-09 16:44:16 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-02-09 16:45:55 +0100KindFoxo(~KindFoxo@user/KindoFoxo) (Ping timeout: 264 seconds)
2026-02-09 16:46:36 +0100KindFoxo(~KindFoxo@user/KindoFoxo) KindoFoxo
2026-02-09 16:49:43 +0100KindFoxo(~KindFoxo@user/KindoFoxo) (Read error: Connection reset by peer)
2026-02-09 16:50:01 +0100KindFoxo(~KindFoxo@user/KindoFoxo) KindoFoxo
2026-02-09 16:50:15 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 16:51:23 +0100EvanR(~EvanR@user/evanr) (Remote host closed the connection)
2026-02-09 16:51:43 +0100EvanR(~EvanR@user/evanr) EvanR
2026-02-09 16:53:28 +0100st_aldini(~Thunderbi@136.48.46.187) st_aldini
2026-02-09 16:53:50 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer)
2026-02-09 16:54:45 +0100Enrico63(~Enrico63@host-79-27-153-69.retail.telecomitalia.it) Enrico63
2026-02-09 16:55:24 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-02-09 16:55:26 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-02-09 16:56:28 +0100KindFoxo(~KindFoxo@user/KindoFoxo) (Ping timeout: 246 seconds)
2026-02-09 16:56:54 +0100KindFoxo(~KindFoxo@user/KindoFoxo) KindoFoxo
2026-02-09 16:59:23 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Quit: Lost terminal)
2026-02-09 17:01:10 +0100trickard__trickard
2026-02-09 17:01:26 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf
2026-02-09 17:06:03 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 17:06:55 +0100AlexNoo_(~AlexNoo@85.174.182.86)
2026-02-09 17:09:01 +0100nshepperd28(~nshepperd@2a01:4f9:3b:4cc9::2) nshepperd
2026-02-09 17:09:02 +0100nek06(~nek0@user/nek0) nek0
2026-02-09 17:09:07 +0100priime5(~priime@2a01:4ff:f0:7ccc::1) priime
2026-02-09 17:09:26 +0100dyniec_(~dyniec@dybiec.info) dyniec
2026-02-09 17:09:26 +0100dyniec(~dyniec@dybiec.info) (Killed (tungsten.libera.chat (Nickname regained by services)))
2026-02-09 17:09:26 +0100dyniec_dyniec
2026-02-09 17:09:54 +0100edwardk_(sid47016@haskell/developer/edwardk) edwardk
2026-02-09 17:10:06 +0100firesquidwao(~a@put.gay)
2026-02-09 17:10:32 +0100NiKaN_(sid385034@id-385034.helmsley.irccloud.com) NiKaN
2026-02-09 17:10:33 +0100arkeet`(~arkeet@moriya.ca)
2026-02-09 17:10:42 +0100RSBach(~RMSBach@2603:6013:9b00:a7c8:e7e5:f272:eb86:ddf) RMSBach
2026-02-09 17:10:44 +0100jinsun-(bnc4free@here.and.ready-to.party)
2026-02-09 17:10:48 +0100andreas808(andreas303@is.drunk.and.ready-to.party) andreas303
2026-02-09 17:10:49 +0100Ekho-(~Ekho@user/ekho) Ekho
2026-02-09 17:11:07 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-09 17:11:10 +0100ladyfriday(~robert@what.i.hope.is.not.a.tabernaevagant.es) mrmonday
2026-02-09 17:11:19 +0100otto_s_(~user@p5b044c1a.dip0.t-ipconnect.de)
2026-02-09 17:11:23 +0100Pozyomka_(~pyon@user/pyon) pyon
2026-02-09 17:11:23 +0100takuan_dozo(~takuan@d8D86B9E9.access.telenet.be)
2026-02-09 17:11:24 +0100sshine_(~simon@dao.mechanicus.xyz) sshine
2026-02-09 17:11:27 +0100rncwnd(~quassel@2a01:4f8:221:27c6::1) rncwnd
2026-02-09 17:11:28 +0100carbolymer_(~carbolyme@delirium.systems) carbolymer
2026-02-09 17:11:30 +0100janus__(janus@user/janus) janus
2026-02-09 17:11:39 +0100sttau_(~sttau@199.180.255.81)
2026-02-09 17:11:47 +0100fp(~Thunderbi@2001-14ba-6e24-3000--198.rev.dnainternet.fi) (Quit: fp)
2026-02-09 17:11:59 +0100AlexNoo(~AlexNoo@85.174.182.86) (Read error: Connection reset by peer)
2026-02-09 17:11:59 +0100cyphase(~cyphase@user/cyphase) (Ping timeout: 439 seconds)
2026-02-09 17:12:00 +0100juri_(~juri@84.19.175.187) (Read error: Connection reset by peer)
2026-02-09 17:12:03 +0100sweater(~sweater@206.81.18.26) sweater
2026-02-09 17:12:04 +0100tuxpaint(~a@2600:3c06::f03c:93ff:fea6:ef0e) (Read error: Connection reset by peer)
2026-02-09 17:12:07 +0100juri__(~juri@84.19.175.187) juri_
2026-02-09 17:12:14 +0100df_(~ben@justworks.xyz)
2026-02-09 17:13:55 +0100Pozyomka(~pyon@user/pyon) (Ping timeout: 258 seconds)
2026-02-09 17:13:55 +0100otto_s(~user@p5b044c1a.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2026-02-09 17:13:55 +0100RMSBach(~RMSBach@24.210.9.182) (Ping timeout: 258 seconds)
2026-02-09 17:13:55 +0100andreas303(andreas303@is.drunk.and.ready-to.party) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100cyphase(~cyphase@user/cyphase) cyphase
2026-02-09 17:13:56 +0100nek0(~nek0@user/nek0) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100vulpine(xfnw@user/meow/xfnw) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100rncwnd_(~quassel@2a01:4f8:221:27c6::1) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100carbolymer(~carbolyme@delirium.systems) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100arkeet(arkeet@moriya.ca) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100Ekho(~Ekho@user/ekho) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100sshine(~simon@dao.mechanicus.xyz) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100sweater4(~sweater@206.81.18.26) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100jinsun(jinsun@user/jinsun) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100NiKaN(sid385034@id-385034.helmsley.irccloud.com) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100priime(~priime@2a01:4ff:f0:7ccc::1) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100sttau(~sttau@199.180.255.81) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100df(~ben@justworks.xyz) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100edwardk(sid47016@haskell/developer/edwardk) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100nshepperd2(~nshepperd@2a01:4f9:3b:4cc9::2) (Ping timeout: 258 seconds)
2026-02-09 17:13:56 +0100RSBachRMSBach
2026-02-09 17:13:56 +0100nek06nek0
2026-02-09 17:13:56 +0100arkeet`arkeet
2026-02-09 17:13:56 +0100nshepperd28nshepperd2
2026-02-09 17:13:57 +0100priime5priime
2026-02-09 17:13:57 +0100edwardk_edwardk
2026-02-09 17:14:00 +0100NiKaN_NiKaN
2026-02-09 17:14:35 +0100jess(meow@libera/staff/cat/jess) jess
2026-02-09 17:15:59 +0100janus(janus@user/janus) (Ping timeout: 244 seconds)
2026-02-09 17:16:05 +0100remexre(~remexre@user/remexre) (Ping timeout: 244 seconds)
2026-02-09 17:16:20 +0100Ekho-(~Ekho@user/ekho) (Max SendQ exceeded)
2026-02-09 17:16:30 +0100takuan(~takuan@d8D86B9E9.access.telenet.be) (Ping timeout: 244 seconds)
2026-02-09 17:16:41 +0100remexre(~remexre@user/remexre) remexre
2026-02-09 17:17:28 +0100trickard(~trickard@cpe-58-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-09 17:17:38 +0100Ekho(~Ekho@user/ekho) Ekho
2026-02-09 17:17:42 +0100trickard_(~trickard@cpe-58-98-47-163.wireline.com.au)
2026-02-09 17:18:28 +0100Googulator(~Googulato@2a01-036d-0106-216f-e9c4-b0ef-4e86-2425.pool6.digikabel.hu) (Quit: Client closed)
2026-02-09 17:18:37 +0100machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) machinedgod
2026-02-09 17:19:00 +0100Googulator(~Googulato@2a01-036d-0106-216f-e9c4-b0ef-4e86-2425.pool6.digikabel.hu)
2026-02-09 17:21:48 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 17:22:11 +0100jess_(meow@libera/staff/cat/jess) (Ping timeout: 610 seconds)
2026-02-09 17:23:25 +0100polykernel(~polykerne@user/polykernel) (Remote host closed the connection)
2026-02-09 17:23:44 +0100polykernel(~polykerne@user/polykernel) polykernel
2026-02-09 17:26:05 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer)
2026-02-09 17:26:25 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-02-09 17:26:40 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-02-09 17:31:20 +0100Googulator(~Googulato@2a01-036d-0106-216f-e9c4-b0ef-4e86-2425.pool6.digikabel.hu) (Quit: Client closed)
2026-02-09 17:31:29 +0100Googulator(~Googulato@94-21-139-88.pool.digikabel.hu)
2026-02-09 17:32:51 +0100Enrico63(~Enrico63@host-79-27-153-69.retail.telecomitalia.it) (Quit: Client closed)
2026-02-09 17:34:20 +0100vulpine(xfnw@user/meow/xfnw) xfnw
2026-02-09 17:35:28 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 17:40:14 +0100Googulator49(~Googulato@2a01-036d-0106-216f-e9c4-b0ef-4e86-2425.pool6.digikabel.hu)
2026-02-09 17:40:51 +0100Googulator(~Googulato@94-21-139-88.pool.digikabel.hu) (Quit: Client closed)
2026-02-09 17:42:13 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-02-09 17:43:35 +0100chele(~chele@user/chele) (Remote host closed the connection)
2026-02-09 17:44:24 +0100jmcantrell_(~weechat@user/jmcantrell) jmcantrell
2026-02-09 17:49:49 +0100janus__(janus@user/janus) (Ping timeout: 260 seconds)
2026-02-09 17:50:48 +0100Googulator49Googulator
2026-02-09 17:51:38 +0100janus(janus@user/janus) janus
2026-02-09 17:53:30 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 17:56:18 +0100Enrico63(~Enrico63@host-79-27-153-69.retail.telecomitalia.it) Enrico63
2026-02-09 17:57:25 +0100petrichor(~jez@user/petrichor) (Ping timeout: 244 seconds)
2026-02-09 17:58:25 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-02-09 18:05:23 +0100petrichor(~jez@user/petrichor) petrichor
2026-02-09 18:08:10 +0100Enrico63(~Enrico63@host-79-27-153-69.retail.telecomitalia.it) (Quit: Client closed)
2026-02-09 18:09:20 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 18:10:19 +0100trickard_(~trickard@cpe-58-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-02-09 18:10:32 +0100trickard_(~trickard@cpe-58-98-47-163.wireline.com.au)
2026-02-09 18:12:23 +0100Googulator(~Googulato@2a01-036d-0106-216f-e9c4-b0ef-4e86-2425.pool6.digikabel.hu) (Quit: Client closed)
2026-02-09 18:12:36 +0100Googulator(~Googulato@2a01-036d-0106-216f-e9c4-b0ef-4e86-2425.pool6.digikabel.hu)
2026-02-09 18:14:05 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-02-09 18:16:13 +0100petrichor(~jez@user/petrichor) (Ping timeout: 264 seconds)
2026-02-09 18:22:06 +0100tromp(~textual@2001:1c00:3487:1b00:199:803c:4cc4:404b) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-02-09 18:22:55 +0100tromp(~textual@2001:1c00:3487:1b00:199:803c:4cc4:404b)
2026-02-09 18:25:04 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 18:28:03 +0100petrichor(~jez@user/petrichor) petrichor
2026-02-09 18:30:40 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh
2026-02-09 18:32:01 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-02-09 18:34:00 +0100tromp(~textual@2001:1c00:3487:1b00:199:803c:4cc4:404b) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-02-09 18:36:57 +0100Guest58(~Guest58@194.246.81.225)
2026-02-09 18:51:24 +0100tromp(~textual@2001:1c00:3487:1b00:199:803c:4cc4:404b)
2026-02-09 18:52:16 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 18:53:06 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-02-09 18:57:13 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Ping timeout: 246 seconds)
2026-02-09 18:57:37 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-09 19:06:14 +0100KindFoxo(~KindFoxo@user/KindoFoxo) (Read error: Connection reset by peer)
2026-02-09 19:06:33 +0100KindFoxo(~KindFoxo@user/KindoFoxo) KindoFoxo
2026-02-09 19:08:05 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 19:12:53 +0100kuribas(~user@2a02-1810-2825-6000-aa26-243-5761-7363.ip6.access.telenet.be) (Remote host closed the connection)
2026-02-09 19:13:12 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-02-09 19:21:15 +0100Guest58(~Guest58@194.246.81.225) (Quit: Client closed)
2026-02-09 19:23:54 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 19:27:31 +0100tromp(~textual@2001:1c00:3487:1b00:199:803c:4cc4:404b) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-02-09 19:30:08 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-02-09 19:31:13 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-09 19:32:25 +0100olivial(~benjaminl@user/benjaminl) (Ping timeout: 264 seconds)
2026-02-09 19:33:11 +0100olivial(~benjaminl@user/benjaminl) benjaminl
2026-02-09 19:33:38 +0100Square2(~Square@user/square) Square
2026-02-09 19:34:25 +0100emaczen(~user@user/emaczen) (Remote host closed the connection)
2026-02-09 19:35:01 +0100Square(~Square4@user/square) (Ping timeout: 246 seconds)
2026-02-09 19:36:26 +0100emaczen(~user@user/emaczen) emaczen
2026-02-09 19:41:56 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 19:46:28 +0100trickard_trickard
2026-02-09 19:47:25 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-09 19:50:02 +0100trickard__(~trickard@cpe-58-98-47-163.wireline.com.au)
2026-02-09 19:51:01 +0100trickard(~trickard@cpe-58-98-47-163.wireline.com.au) (Ping timeout: 264 seconds)
2026-02-09 19:55:50 +0100hakutaku(~textual@user/hakutaku) hakutaku
2026-02-09 19:57:59 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 20:01:01 +0100jess(meow@libera/staff/cat/jess) ()
2026-02-09 20:03:04 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-02-09 20:06:12 +0100attlin(~user@user/attlin) (Quit: Leaving)
2026-02-09 20:06:49 +0100attlin(~user@216.126.236.136)
2026-02-09 20:06:49 +0100attlin(~user@216.126.236.136) (Changing host)
2026-02-09 20:06:49 +0100attlin(~user@user/attlin) attlin
2026-02-09 20:13:46 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 20:13:51 +0100ft(~ft@p508db4c0.dip0.t-ipconnect.de) ft
2026-02-09 20:15:15 +0100attlin(~user@user/attlin) (Quit: Leaving)
2026-02-09 20:16:28 +0100Tuplanolla(~Tuplanoll@85-156-32-207.elisa-laajakaista.fi) Tuplanolla
2026-02-09 20:18:26 +0100attlin(~user@user/attlin) attlin
2026-02-09 20:19:08 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-02-09 20:19:18 +0100target_i(~target_i@user/target-i/x-6023099) target_i
2026-02-09 20:19:36 +0100attlin(~user@user/attlin) (Client Quit)
2026-02-09 20:20:13 +0100attlin(~user@216.126.236.136)
2026-02-09 20:20:13 +0100attlin(~user@216.126.236.136) (Changing host)
2026-02-09 20:20:13 +0100attlin(~user@user/attlin) attlin
2026-02-09 20:22:43 +0100attlin(~user@user/attlin) (Client Quit)
2026-02-09 20:22:51 +0100jmcantrell_jmcantrell
2026-02-09 20:23:19 +0100target_i(~target_i@user/target-i/x-6023099) (Ping timeout: 240 seconds)
2026-02-09 20:24:37 +0100target_i(~target_i@user/target-i/x-6023099) target_i
2026-02-09 20:25:15 +0100wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2026-02-09 20:29:36 +0100merijn(~merijn@62.45.136.136) merijn
2026-02-09 20:30:44 +0100attlin(~user@user/attlin) attlin
2026-02-09 20:31:30 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
2026-02-09 20:34:09 +0100DetourNetworkUK(DetourNetw@user/DetourNetworkUK) (Read error: Connection reset by peer)
2026-02-09 20:34:18 +0100merijn(~merijn@62.45.136.136) (Ping timeout: 252 seconds)
2026-02-09 20:34:58 +0100DetourNetworkUK(~DetourNet@user/DetourNetworkUK) DetourNetworkUK
2026-02-09 20:43:56 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-02-09 20:44:26 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2026-02-09 20:45:16 +0100Lord_of_Life_Lord_of_Life
2026-02-09 20:45:19 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 20:50:32 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-02-09 20:57:44 +0100machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 244 seconds)
2026-02-09 21:01:06 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 21:03:58 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-02-09 21:08:25 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-09 21:09:33 +0100messewix(~jmc@user/messewix) messewix
2026-02-09 21:11:09 +0100s3np41(~s3np41@078088254000.unknown.vectranet.pl)
2026-02-09 21:11:29 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-02-09 21:12:40 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 255 seconds)
2026-02-09 21:14:19 +0100 <s3np41> Anyone knows of good resources to read up on the ReaderT pattern?
2026-02-09 21:15:09 +0100AlexNoo_AlexNoo
2026-02-09 21:17:14 +0100 <EvanR> there's not much to say about ReaderT itself, which transforms any monad to one with an additional read only context, which you can fully get by writing one yourself
2026-02-09 21:17:22 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-02-09 21:17:37 +0100 <ncf> it's not a pattern, it's a monad transformer, and https://hackage-content.haskell.org/package/mtl-2.3.2/docs/Control-Monad-Reader.html
2026-02-09 21:17:48 +0100 <ncf> even has examples!
2026-02-09 21:17:57 +0100 <EvanR> but going further and making the mtl and transformers API more abstract... there's SPJ's paper listed on the haddocks
2026-02-09 21:18:16 +0100bggd_(~bgg@2a01:e0a:fd5:f510:870e:b6e1:18ac:1926) (Remote host closed the connection)
2026-02-09 21:19:08 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 21:19:53 +0100 <s3np41> well i just wanted to get good examples, so i guess the hackage should suffice?
2026-02-09 21:20:00 +0100 <s3np41> Thanks anyways
2026-02-09 21:20:20 +0100 <EvanR> there do be those there
2026-02-09 21:21:05 +0100 <ncf> if you want an introduction to monad transformers in general then https://en.wikibooks.org/wiki/Haskell/Monad_transformers
2026-02-09 21:21:40 +0100 <s3np41> will read thanks
2026-02-09 21:23:02 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2026-02-09 21:24:12 +0100KindFoxo(~KindFoxo@user/KindoFoxo) (Read error: Connection reset by peer)
2026-02-09 21:24:21 +0100 <c_wraith> There is something people call the "ReaderT pattern" which is not just "this is what ReaderT does". It's about designing your program around a kind of dependency injection in the form of actions being passed around implicitly with ReaderT
2026-02-09 21:24:32 +0100KindFoxo(~KindFoxo@user/KindoFoxo) KindoFoxo
2026-02-09 21:24:37 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-09 21:26:26 +0100 <ncf> seems like a very silly name
2026-02-09 21:26:47 +0100 <ncf> can we not java-fy haskell thanks
2026-02-09 21:27:27 +0100 <c_wraith> Dependency injection is very natural in haskell. It's an overly formal name for "pass parameters", but it's very good to think about doing.
2026-02-09 21:28:34 +0100 <EvanR> don't forget to inject your dependencies
2026-02-09 21:28:53 +0100 <c_wraith> the type checker gets upset when you don't pass enough parameters.
2026-02-09 21:29:05 +0100 <ncf> if you mean dependency injection say dependency injection!
2026-02-09 21:29:13 +0100 <EvanR> I was going to say, if it boils down to passing the arguments you need, there's very little wiggle room to do anything else in haskell
2026-02-09 21:29:14 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
2026-02-09 21:29:27 +0100 <ncf> although maybe continuation-passing would be a better name for this
2026-02-09 21:29:45 +0100 <EvanR> if your dependencies are continuations
2026-02-09 21:30:11 +0100 <ncf> sounds like that's what this is, unless i'm misunderstanding what it is people call the "ReaderT pattern"
2026-02-09 21:31:07 +0100 <EvanR> https://academy.fpblock.com/blog/2017/06/readert-design-pattern/
2026-02-09 21:31:08 +0100 <c_wraith> It's not necessarily continuations. You can pass around `log :: Env -> Level -> Message -> M ()' and there's no continuations there.
2026-02-09 21:32:01 +0100 <c_wraith> They key point is that you've abstracted managing the log system away from the logic that actually sends messages to the log system.
2026-02-09 21:34:29 +0100 <c_wraith> There are a lot of ways to do this, of course. But a single indirect function call is very low weight, compared to a lot of abstractions you can come up with.
2026-02-09 21:34:58 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 21:37:29 +0100 <ncf> i guess this is only necessary in a language without parametrised modules..
2026-02-09 21:39:18 +0100 <c_wraith> technically Haskell has those, but they're so painful that no one uses them.
2026-02-09 21:39:43 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-09 21:39:54 +0100 <ncf> does it?
2026-02-09 21:39:59 +0100 <c_wraith> Also, I guess it's more that *cabal* has them, and will modify the compilation environment to synthesize the equivalent.
2026-02-09 21:40:04 +0100 <dolio> backpack
2026-02-09 21:40:10 +0100 <ncf> oh
2026-02-09 21:40:27 +0100 <c_wraith> I actually use backpack features, but not for parameterized modules.
2026-02-09 21:40:42 +0100 <c_wraith> Just for compatibility with different library versions renaming modules.
2026-02-09 21:42:13 +0100 <EvanR> see also reflection (in haskell, for getting similar things accomplished)
2026-02-09 21:43:36 +0100divlamir(~divlamir@user/divlamir) (Read error: Connection reset by peer)
2026-02-09 21:43:42 +0100KindFoxo(~KindFoxo@user/KindoFoxo) (Ping timeout: 265 seconds)
2026-02-09 21:43:56 +0100divlamir(~divlamir@user/divlamir) divlamir
2026-02-09 21:44:02 +0100KindFoxo(~KindFoxo@user/KindoFoxo) KindoFoxo
2026-02-09 21:44:03 +0100 <EvanR> which I guess has the proper name Implicit Configurations
2026-02-09 21:44:34 +0100 <c_wraith> functionally, the reflection library is also just "passing parameters", except it smuggles the parameter in a class constraint.
2026-02-09 21:44:53 +0100 <c_wraith> Which has interesting UX considerations
2026-02-09 21:50:45 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 245 seconds)
2026-02-09 21:50:47 +0100 <c_wraith> I did some funny stuff faking dependent instances using a Reifies constraint. It works, but actual dependent types would be a lot easier to use.
2026-02-09 21:50:58 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 21:55:36 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-02-09 21:56:01 +0100 <jreicher> I spent probably full months arguing with some friends about exactly what "dependency injection" meant, and more than half of that was trying to figure out what a "dependency" is.
2026-02-09 21:56:09 +0100 <jreicher> ...a full month...
2026-02-09 21:56:51 +0100 <EvanR> a couple lines of code is worth N full months of arguing
2026-02-09 21:58:39 +0100 <EvanR> is jargon darwinistic, i.e. does it persist and expire based on fitness for its purpose, recognized or not xD
2026-02-09 21:59:09 +0100 <geekosaur> it certainly changes over time
2026-02-09 21:59:20 +0100 <EvanR> dependency injection sounds verbose and redundant on the face of it, but maybe that's important xD
2026-02-09 22:00:12 +0100 <jreicher> I've never tried to transplant it to FP. There are certainly people who believe it's very, very important in OO.
2026-02-09 22:01:32 +0100 <EvanR> it's one of several OOP things which boils down to "pass a parameter"
2026-02-09 22:01:42 +0100 <EvanR> in FP
2026-02-09 22:02:41 +0100 <geekosaur> note however that it's controlled not by actual need but by perceived need, and perceptions can be slower to change
2026-02-09 22:03:23 +0100 <geekosaur> OOP smuggles parameters in objects. Haskell can smuggle them in contexts. ☺
2026-02-09 22:03:36 +0100 <geekosaur> or monads
2026-02-09 22:03:54 +0100KindFoxo(~KindFoxo@user/KindoFoxo) (Remote host closed the connection)
2026-02-09 22:04:14 +0100pavonia(~user@user/siracusa) siracusa
2026-02-09 22:04:25 +0100 <jreicher> Yes the mutability of objects is a key point, because the representation of state and the way it's mutated is exactly the kind of implementation detail that clients don't want to know. So I don't think an FP equivalent (if there is one) would just be passing parameters.
2026-02-09 22:04:30 +0100KindFoxo(~KindFoxo@user/KindoFoxo) KindoFoxo
2026-02-09 22:05:15 +0100 <EvanR> is it?
2026-02-09 22:05:30 +0100 <jreicher> Is it what?
2026-02-09 22:05:35 +0100 <EvanR> you can get pretty far in OOP without mutability
2026-02-09 22:06:10 +0100 <jreicher> I would suggest you're not really doing OO in that case. It's an opinion I'm not even sure I believe, but I just don't see OO offering anything special if its state mutation facilities aren't being used.
2026-02-09 22:06:11 +0100 <EvanR> immutable objects is kind of fashionable these days
2026-02-09 22:06:32 +0100 <EvanR> that gets into what OOP even is
2026-02-09 22:06:42 +0100 <EvanR> I don't think mutability is universally critical
2026-02-09 22:06:45 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 22:06:56 +0100 <EvanR> (in fact it messes up some classic inheritance relationships)
2026-02-09 22:07:08 +0100 <jreicher> If you're using an OO language and everything really is immutable, I think you're doing FP in an inappropriate language.
2026-02-09 22:07:38 +0100trickard__trickard
2026-02-09 22:08:20 +0100 <KindFoxo> What is immutability tho? Is Erlang/Elixir a language with immutable state?
2026-02-09 22:08:55 +0100 <KindFoxo> actor seem pretty close to objects for me. I guess originally, in Smalltalk's era, they were the same thing
2026-02-09 22:09:22 +0100Square(~Square4@user/square) Square
2026-02-09 22:10:46 +0100Square2(~Square@user/square) (Ping timeout: 265 seconds)
2026-02-09 22:12:01 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-02-09 22:12:24 +0100 <ski> "FP" : programming with variant/sum types and pattern-matching
2026-02-09 22:12:40 +0100 <ski> "OO" : programming with record/product types and message-dispatching
2026-02-09 22:13:02 +0100 <KindFoxo> Haskell seems to me like a structural programming language, in a sense category theory is a reborn of structuralism in mathematics. In Haskell it allows to extract the structure emerging in relations into some sort of a pattern.
2026-02-09 22:13:30 +0100 <KindFoxo> For example, Reader is such an extraction of the fact that a functional arrow is a monad
2026-02-09 22:13:57 +0100 <ski> KindFoxo : you can store data in processes in Erlang, e.g. in its dict, or simply by having it wait for requests to set and access the state (which is immutably passed around in a tail-recursive loop)
2026-02-09 22:15:26 +0100 <KindFoxo> ski: you've made Lisps not functional... and I guess the language FP does not fit in the definition being obviously a functional programming language
2026-02-09 22:16:13 +0100 <ski> yea, those two are very restricted, and highly stylized, alternatives, for the purpose of showing a duality
2026-02-09 22:16:23 +0100 <ski> (that's why i used quotes)
2026-02-09 22:17:22 +0100 <KindFoxo> also, all the ML-like FP languages have record types, why should it be not an FP thing... I've seen some formalization of classes as coinductive types. In curry or Coq, not sure, sounds interesting to me... As for right now, I don't understand "the idea" behind OOP...
2026-02-09 22:18:10 +0100 <KindFoxo> oh, I'm sorry... I don't read while writing...
2026-02-09 22:18:39 +0100 <ski> but they don't have message-dispatching definition syntax (called "copatterns" in Agda. also used, years before that, by e.g. Erik Poll)
2026-02-09 22:20:00 +0100 <ski> the point is that *one* way to construe "OO" is that the main idea is to structure your program around records with delayed (possibly parameterized) fields. with or without subtyping. with or without implementation inheritance and late binding, open recursion
2026-02-09 22:20:01 +0100 <EvanR> jreicher, cardelli theory of objects shows two simplistic OOP "calculi" one with mutable, one without. Both are superficially similar to LC. So yeah
2026-02-09 22:20:43 +0100 <EvanR> see also ocaml for a function language that happens to also support OOP
2026-02-09 22:20:46 +0100 <EvanR> functional
2026-02-09 22:21:27 +0100 <ski> and both these two structuring approaches, "FP", and "OO", are important. both are available in Haskell (although message-dispatching syntax, like in Agda, would help encourage it a bit more). VisitorPattern is a way to simulate (via CPA) pattern-matching on variant types, in traditional OO languages
2026-02-09 22:21:52 +0100 <ski> yea, OCaml has support for immutable OO
2026-02-09 22:22:11 +0100 <ski> returning a clone of the current object, but with some of the instance fields swapped out
2026-02-09 22:22:33 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 22:23:12 +0100 <ski> also, you can specify that an argument type, or result type, of a method is of "This" class (like "binary methods" and "clone methods"). this in turn causes not all subclasses to induce subtypes (which OCaml tracks statically)
2026-02-09 22:23:38 +0100 <ski> @where on-understanding
2026-02-09 22:23:38 +0100 <lambdabot> "On Understanding Types, Data Abstraction, and Polymorphism" by Luca Cardelli,Peter Wegner in 1985-12 at <http://lucacardelli.name/Papers/OnUnderstanding.A4.pdf>
2026-02-09 22:23:41 +0100 <ski> @where on-understanding-revisited
2026-02-09 22:23:41 +0100 <lambdabot> "On Understanding Data Abstraction, Revisited" by William R. Cook in 2009-10 at <http://www.cs.utexas.edu/~wcook/Drafts/2009/essay.pdf>
2026-02-09 22:24:37 +0100 <ski> these talk, amongst other things, about subtyping, parametric polymorphism, existential quantification. and how existentials are related to closures & object-orientation, and also (in a different way) to abstract data types
2026-02-09 22:24:41 +0100picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Quit: WeeChat 4.8.1)
2026-02-09 22:25:05 +0100 <ski> @where polymorphic-type-inference
2026-02-09 22:25:05 +0100 <lambdabot> "Polymorphic Type Inference" by Michael I. Schwartzbach in 1995-03 at <https://cs.au.dk/~mis/typeinf.p(s|df)>,<http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.57.1493>
2026-02-09 22:25:12 +0100 <ski> might also be helpful
2026-02-09 22:26:35 +0100picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) NinjaTrappeur
2026-02-09 22:27:03 +0100 <ski> (oh, try <https://cs.au.dk/~amoeller/mis/typeinf.pdf> for the last one)
2026-02-09 22:27:20 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-02-09 22:28:03 +0100 <ski> @where+ polymorphic-type-inference "Polymorphic Type Inference" by Michael I. Schwartzbach in 1995-03 at <https://cs.au.dk/~amoeller/mis/typeinf.p(s|df)>,<http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.57.1493>
2026-02-09 22:28:03 +0100 <lambdabot> Nice!
2026-02-09 22:30:56 +0100takuan_dozo(~takuan@d8D86B9E9.access.telenet.be) (Ping timeout: 240 seconds)
2026-02-09 22:35:12 +0100 <EvanR> ski, "open recursion" vs general recursion?
2026-02-09 22:35:36 +0100 <c_wraith> open recursion is a term used primarily to describe OOP's late dispatch mechanisms
2026-02-09 22:35:57 +0100 <c_wraith> technically you can do it with recursion schemes in Haskell, but no one writes their code that way
2026-02-09 22:36:55 +0100michalz(~michalz@185.246.207.200) (Remote host closed the connection)
2026-02-09 22:38:19 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 22:39:59 +0100target_i(~target_i@user/target-i/x-6023099) (Quit: leaving)
2026-02-09 22:44:21 +0100 <ski> EvanR : given an object with two methods `f' and `g', where the implementation of `f' calls `g' (in the same object). now, you construct a new object from this old one, replacing the `g' implementation. "open recursion" means that `f' in this object will now call the new `g', rather than the old
2026-02-09 22:45:05 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-02-09 22:45:30 +0100 <ski> or, you can express it in terms of classes (object templates. not directly related to object types), instead of creating a new object, you create a new subclass, overriding `g' with a new implementation. the old `f' in the new class should now call the new `g'
2026-02-09 22:46:37 +0100 <ski> you need either mutation, or delaying application of `fix', to implement this
2026-02-09 22:47:42 +0100 <ski> you could define a "class" as a function of type `O -> O' (taking `self'/`this' as input), and to instantiate a new object of this class, you call `fix' on it
2026-02-09 22:56:21 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 22:58:23 +0100Alex_delenda_est(~al_test@85.174.182.86)
2026-02-09 23:00:32 +0100eriedaberrie_eriedaberrie
2026-02-09 23:01:34 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-02-09 23:02:31 +0100comonad(~comonad@p200300d02722ae00dce4ce9451b59974.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2026-02-09 23:08:35 +0100comonad(~comonad@pd9e072e5.dip0.t-ipconnect.de)
2026-02-09 23:12:08 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 23:16:13 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-02-09 23:17:00 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-02-09 23:26:39 +0100petrichor(~jez@user/petrichor) (Quit: ZNC 1.10.1 - https://znc.in)
2026-02-09 23:27:29 +0100petrichor(~jez@user/petrichor) petrichor
2026-02-09 23:27:33 +0100msyds(~msyds@164.47.100.4)
2026-02-09 23:27:54 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-02-09 23:30:31 +0100user363627(~user@user/user363627) (Quit: Konversation terminated!)
2026-02-09 23:30:53 +0100user363627(~user@user/user363627) user363627
2026-02-09 23:32:12 +0100machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) machinedgod
2026-02-09 23:32:56 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)