2025/04/16

2025-04-16 00:00:01 +0200Googulator82(~Googulato@94-21-172-228.pool.digikabel.hu)
2025-04-16 00:00:19 +0200 <monochrom> "thread block" gives me the wrong impression that we're blocking a thread.
2025-04-16 00:00:58 +0200 <monochrom> I wonder if "thread bloc" works better. (Like, "trie" is clearly different from "tree" right? >:D )
2025-04-16 00:01:45 +0200 <monochrom> Right? "writer's block" does not mean a collection of writers. >:)
2025-04-16 00:02:47 +0200todi(~todi@p57803331.dip0.t-ipconnect.de) (Max SendQ exceeded)
2025-04-16 00:06:47 +0200todi(~todi@p57803331.dip0.t-ipconnect.de) todi
2025-04-16 00:07:58 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 00:11:47 +0200Googulator82(~Googulato@94-21-172-228.pool.digikabel.hu) (Quit: Client closed)
2025-04-16 00:11:53 +0200ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 00:12:02 +0200Googulator82(~Googulato@94-21-172-228.pool.digikabel.hu)
2025-04-16 00:13:09 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 00:15:36 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2025-04-16 00:15:36 +0200ljdarj1ljdarj
2025-04-16 00:16:47 +0200Googulator82(~Googulato@94-21-172-228.pool.digikabel.hu) (Client Quit)
2025-04-16 00:17:03 +0200Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu)
2025-04-16 00:19:22 +0200tromp(~textual@2001:1c00:3487:1b00:c0e6:9a43:de22:8c0a) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-04-16 00:20:44 +0200notdabs(~Owner@2600:1700:69cf:9000:2d58:f7ab:5036:c251)
2025-04-16 00:22:39 +0200alecs(~alecs@61.pool85-58-154.dynamic.orange.es) (Quit: Client closed)
2025-04-16 00:22:49 +0200ystael(~ystael@user/ystael) (Ping timeout: 276 seconds)
2025-04-16 00:25:22 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 00:26:04 +0200tessier(~tessier@ip68-8-117-219.sd.sd.cox.net) (Ping timeout: 276 seconds)
2025-04-16 00:27:49 +0200tessier(~tessier@ec2-184-72-149-67.compute-1.amazonaws.com) tessier
2025-04-16 00:29:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 00:30:38 +0200haritz(~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8)
2025-04-16 00:30:38 +0200haritz(~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8) (Changing host)
2025-04-16 00:30:38 +0200haritz(~hrtz@user/haritz) haritz
2025-04-16 00:32:26 +0200haritz(~hrtz@user/haritz) (Remote host closed the connection)
2025-04-16 00:38:06 +0200target_i(~target_i@user/target-i/x-6023099) (Quit: leaving)
2025-04-16 00:38:36 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2025-04-16 00:41:42 +0200 <haskellbridge> <Liamzee> evanr, if you're still here, do you mind if I steal your phrase "lego feeling" and put it in opposition to eDSL disease? I.e, two states that Haskell libraries, scripts, and codebases can obtain, and how to get to "lego feeling" and avoid eDSL disease?
2025-04-16 00:42:14 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 00:42:36 +0200 <haskellbridge> <Liamzee> I mean, I'd like to put it up on Discourse or something, i.e, ask what people know about "lego feeling" vs eDSL disease (and implicitly, "my code is going to break within the year and I accidentally created legacy code that only I can maintain")
2025-04-16 00:42:36 +0200 <EvanR> I didn't coin that
2025-04-16 00:42:43 +0200 <EvanR> scroll up more
2025-04-16 00:44:25 +0200 <haskellbridge> <Liamzee> [exa], then
2025-04-16 00:45:17 +0200 <haskellbridge> <Liamzee> yeah, okay, need to figure out how to get the registration working on https://ricardo.community
2025-04-16 00:45:33 +0200 <haskellbridge> <Liamzee> and fix the ssh certificate while i'm at it
2025-04-16 00:46:40 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 00:47:53 +0200 <haskellbridge> <Liamzee> while racing this guy, http://xhslink.com/a/bv80ykq0qMkab, to see who can get an mvp up first; guess this project has to be open-sourced because my revenue model i can't do on my own, otherwise it'd be another shitty upwork clone
2025-04-16 00:50:01 +0200 <haskellbridge> <Liamzee> rumors are that Jane Street picked him up and he quit (likely because it's less pressure doing start-ups than ibanks, but he'll claim it's because of jealousy of his quant girlfriend)
2025-04-16 00:51:12 +0200weary-traveler(~user@user/user363627) user363627
2025-04-16 00:51:46 +0200 <haskellbridge> <Liamzee> hope you're doing well, weary-traveler!
2025-04-16 00:51:49 +0200 <haskellbridge> <Liamzee> running off to dinner now
2025-04-16 00:54:14 +0200 <weary-traveler> Liamzee: do we know each other? sorry, having trouble placing the nick
2025-04-16 00:56:14 +0200talismanick(~user@2601:644:937c:ed10::ae5) talismanick
2025-04-16 00:59:36 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 01:04:25 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 01:07:07 +0200 <monochrom> Liamzee is Inst.
2025-04-16 01:10:40 +0200 <weary-traveler> monochrom: what's Inst.?
2025-04-16 01:10:43 +0200 <haskellbridge> <Liamzee> i might have mistaken you for someone else, sorry, reading through logs now
2025-04-16 01:11:31 +0200 <weary-traveler> mistaken for whom, i wonder
2025-04-16 01:12:09 +0200 <EvanR> I thought Liamzee could be Inst
2025-04-16 01:12:35 +0200 <EvanR> short for Instigator xD
2025-04-16 01:12:43 +0200 <geekosaur> yes, they're Inst when on IRC-side and Liamzee when Matrix-side
2025-04-16 01:12:59 +0200 <haskellbridge> <Liamzee> there was a gentlemen who popped in with some problems
2025-04-16 01:13:20 +0200 <haskellbridge> <Liamzee> %s/gentlemen/gentleman
2025-04-16 01:13:25 +0200 <haskellbridge> <Liamzee> which I don't think was adequately solved
2025-04-16 01:13:45 +0200 <weary-traveler> and here i was thinking liamzee was an llm
2025-04-16 01:13:52 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2025-04-16 01:14:36 +0200 <haskellbridge> <Liamzee> it was emojelly
2025-04-16 01:14:51 +0200 <haskellbridge> <Liamzee> might as well be an llm, i get things wrong about as often :(
2025-04-16 01:15:54 +0200mange(~user@user/mange) mange
2025-04-16 01:16:14 +0200 <EvanR> impressive
2025-04-16 01:16:28 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 01:16:41 +0200 <haskellbridge> <Liamzee> sorry about the mistaken identity, weary
2025-04-16 01:18:38 +0200haritz(~hrtz@152.37.68.178)
2025-04-16 01:18:38 +0200haritz(~hrtz@152.37.68.178) (Changing host)
2025-04-16 01:18:38 +0200haritz(~hrtz@user/haritz) haritz
2025-04-16 01:19:35 +0200 <EvanR> for more folk reference to lego (in this case, magic lego) see "graphical linear algebra blog"
2025-04-16 01:21:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 01:21:17 +0200Square(~Square@user/square) Square
2025-04-16 01:21:21 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-04-16 01:22:33 +0200Sgeo(~Sgeo@user/sgeo) Sgeo
2025-04-16 01:25:08 +0200 <haskellbridge> <Liamzee> thanks https://graphicallinearalgebra.net
2025-04-16 01:33:45 +0200 <weary-traveler> EvanR: is that the one that uses string/circuit diagrams. i recall there being something like that by an australian researcher/prof
2025-04-16 01:34:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 01:35:16 +0200 <EvanR> yes
2025-04-16 01:35:21 +0200 <EvanR> string diagrams, eventually
2025-04-16 01:35:34 +0200 <EvanR> but it is a lot of linear algebra, in disguise
2025-04-16 01:41:08 +0200infinity0(~infinity0@pwned.gg) (Ping timeout: 268 seconds)
2025-04-16 01:41:29 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-04-16 01:41:45 +0200jespada(~jespada@r167-61-124-233.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
2025-04-16 01:41:57 +0200 <haskellbridge> <Liamzee> the sad thing is, i've totally forgotten my linear algebra ;_;
2025-04-16 01:44:08 +0200 <EvanR> you don't need to know any to read the blog
2025-04-16 01:44:41 +0200 <haskellbridge> <Liamzee> oh no, i'm just trying to remember stuff about eigenvectors etc
2025-04-16 01:44:51 +0200 <haskellbridge> <Liamzee> i rushed it, was just cramming practice problems to ace the test
2025-04-16 01:45:08 +0200 <haskellbridge> <Liamzee> whereas it's probably the part of math i'm best at, i got lost at geometry :(
2025-04-16 01:45:47 +0200 <haskellbridge> <Liamzee> too shy to ask "how to derive sin instead of relying on these odious calculating machines"
2025-04-16 01:46:17 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
2025-04-16 01:47:17 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 01:50:55 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 01:52:14 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-04-16 01:52:16 +0200j1n37-(~j1n37@user/j1n37) (Ping timeout: 265 seconds)
2025-04-16 01:54:27 +0200sprotte24(~sprotte24@p200300d16f238d00f5d5381b458840fc.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2025-04-16 01:56:54 +0200arahael(~arahael@user/arahael) arahael
2025-04-16 01:57:56 +0200Igloo(~ian@81.2.99.210) (Ping timeout: 272 seconds)
2025-04-16 02:01:27 +0200infinity0(~infinity0@pwned.gg) infinity0
2025-04-16 02:03:05 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 02:07:42 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 02:08:55 +0200hololeap(~quassel@user/hololeap) (Quit: Bye)
2025-04-16 02:09:17 +0200Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu) (Quit: Client closed)
2025-04-16 02:09:41 +0200Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu)
2025-04-16 02:10:52 +0200j1n37-(~j1n37@user/j1n37) j1n37
2025-04-16 02:11:00 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 252 seconds)
2025-04-16 02:11:35 +0200poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 02:13:33 +0200poscat(~poscat@user/poscat) poscat
2025-04-16 02:14:22 +0200poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 02:15:17 +0200j1n37-(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-16 02:16:26 +0200poscat(~poscat@user/poscat) poscat
2025-04-16 02:19:08 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 02:19:32 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 02:20:29 +0200hololeap(~quassel@user/hololeap) hololeap
2025-04-16 02:21:29 +0200hololeap(~quassel@user/hololeap) (Client Quit)
2025-04-16 02:24:11 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 02:24:53 +0200machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 248 seconds)
2025-04-16 02:26:14 +0200poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 02:28:04 +0200poscat(~poscat@user/poscat) poscat
2025-04-16 02:29:35 +0200poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 02:31:06 +0200poscat(~poscat@user/poscat) poscat
2025-04-16 02:31:45 +0200poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 02:31:45 +0200polyphem(~rod@p4fc2c7a3.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2025-04-16 02:32:00 +0200poscat(~poscat@user/poscat) poscat
2025-04-16 02:32:50 +0200poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 02:32:53 +0200acidjnk(~acidjnk@p200300d6e71c4f5865559714f8604ffa.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2025-04-16 02:32:54 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-16 02:33:06 +0200poscat(~poscat@user/poscat) poscat
2025-04-16 02:33:27 +0200polyphem(~rod@p4fc2c4fb.dip0.t-ipconnect.de) polyphem
2025-04-16 02:35:54 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 02:36:51 +0200j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-16 02:37:38 +0200poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 02:39:12 +0200poscat(~poscat@user/poscat) poscat
2025-04-16 02:39:56 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 02:43:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 02:44:57 +0200tremon(~tremon@83.80.159.219) (Quit: getting boxed in)
2025-04-16 02:52:56 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:322:62f9:6518:a6a8) hgolden
2025-04-16 02:53:09 +0200otto_s(~user@p5b04470d.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2025-04-16 02:53:59 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 02:55:11 +0200otto_s(~user@p5b044a7e.dip0.t-ipconnect.de)
2025-04-16 02:58:29 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 02:59:21 +0200notdabs(~Owner@2600:1700:69cf:9000:2d58:f7ab:5036:c251) (Quit: Leaving)
2025-04-16 02:59:43 +0200L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection timed out)
2025-04-16 03:00:22 +0200poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 03:02:13 +0200poscat(~poscat@user/poscat) poscat
2025-04-16 03:11:26 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 03:12:59 +0200xff0x(~xff0x@2405:6580:b080:900:a06a:3d55:af99:ce4d) (Ping timeout: 265 seconds)
2025-04-16 03:15:01 +0200poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 03:15:12 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 264 seconds)
2025-04-16 03:16:06 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 03:16:49 +0200j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-16 03:17:15 +0200poscat(~poscat@user/poscat) poscat
2025-04-16 03:19:34 +0200Igloo(~ian@81.2.99.210) Igfoo
2025-04-16 03:19:42 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
2025-04-16 03:21:35 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 03:21:54 +0200poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 03:22:31 +0200Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu) (Quit: Client closed)
2025-04-16 03:22:53 +0200Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu)
2025-04-16 03:23:46 +0200poscat(~poscat@user/poscat) poscat
2025-04-16 03:25:07 +0200causal(~eric@50.35.84.231) causal
2025-04-16 03:25:33 +0200CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 265 seconds)
2025-04-16 03:27:58 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 03:28:16 +0200j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-16 03:30:17 +0200rosco(~rosco@183.171.72.24) rosco
2025-04-16 03:30:49 +0200euleritian(~euleritia@95.90.214.149) (Remote host closed the connection)
2025-04-16 03:31:40 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 03:32:21 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 03:32:25 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 03:36:31 +0200rosco(~rosco@183.171.72.24) (Quit: Gotta go.)
2025-04-16 03:40:40 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Quit: Lost terminal)
2025-04-16 03:43:33 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 03:44:53 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-04-16 03:45:11 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf
2025-04-16 03:46:35 +0200rosco(~rosco@183.171.72.24) rosco
2025-04-16 03:48:14 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 03:50:39 +0200rosco(~rosco@183.171.72.24) (Read error: Connection reset by peer)
2025-04-16 03:50:48 +0200rosco(~rosco@2001:e68:5442:b896:2437:120f:9971:a543) rosco
2025-04-16 03:53:48 +0200 <monochrom> You can learn linear algebra by just learning quantum computing. >:)
2025-04-16 03:55:26 +0200 <monochrom> You can learn more linear algebra by just learning machine learning. >:)
2025-04-16 03:59:21 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 04:04:28 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 04:08:45 +0200xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2025-04-16 04:14:15 +0200rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2025-04-16 04:14:31 +0200Square2(~Square4@user/square) Square
2025-04-16 04:14:50 +0200rvalue(~rvalue@user/rvalue) rvalue
2025-04-16 04:16:49 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 04:17:35 +0200Square(~Square@user/square) (Ping timeout: 260 seconds)
2025-04-16 04:23:36 +0200 <haskellbridge> <Liamzee> what is there to linear algebra besides the capstone course of the standard undergraduate mathematics education (if you're some place decent)
2025-04-16 04:24:02 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 04:24:19 +0200 <haskellbridge> <Liamzee> just do artin for rigor?
2025-04-16 04:29:15 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2025-04-16 04:29:51 +0200euleritian(~euleritia@95.90.214.149)
2025-04-16 04:31:12 +0200td_(~td@i5387093D.versanet.de) (Ping timeout: 272 seconds)
2025-04-16 04:31:13 +0200euleritian(~euleritia@95.90.214.149) (Read error: Connection reset by peer)
2025-04-16 04:32:08 +0200euleritian(~euleritia@95.90.214.149)
2025-04-16 04:32:40 +0200td_(~td@i53870938.versanet.de)
2025-04-16 04:37:40 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 04:39:09 +0200foul_owl(~kerry@94.156.149.97) (Ping timeout: 245 seconds)
2025-04-16 04:41:21 +0200inca(~inca@71.30.233.213) (Ping timeout: 244 seconds)
2025-04-16 04:42:04 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 04:43:30 +0200inca(~inca@71.30.233.213)
2025-04-16 04:47:55 +0200inca(~inca@71.30.233.213) (Ping timeout: 252 seconds)
2025-04-16 04:50:41 +0200inca(~inca@h213.233.30.71.dynamic.ip.windstream.net)
2025-04-16 04:52:18 +0200foul_owl(~kerry@174-21-146-90.tukw.qwest.net) foul_owl
2025-04-16 04:53:39 +0200Core1389(~rosco@183.171.73.8) rosco
2025-04-16 04:54:06 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 04:54:54 +0200inca(~inca@h213.233.30.71.dynamic.ip.windstream.net) (Ping timeout: 252 seconds)
2025-04-16 04:58:12 +0200EvanR(~EvanR@user/evanr) (Remote host closed the connection)
2025-04-16 04:58:25 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 04:58:30 +0200rosco(~rosco@2001:e68:5442:b896:2437:120f:9971:a543) (Ping timeout: 276 seconds)
2025-04-16 04:58:31 +0200EvanR(~EvanR@user/evanr) EvanR
2025-04-16 05:01:30 +0200hololeap(~quassel@user/hololeap) hololeap
2025-04-16 05:07:10 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 05:07:55 +0200inca(~inca@71.30.233.213)
2025-04-16 05:12:22 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 05:17:08 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Quit: Lost terminal)
2025-04-16 05:19:28 +0200Core1389(~rosco@183.171.73.8) (Quit: Gotta go.)
2025-04-16 05:19:33 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf
2025-04-16 05:23:52 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 05:26:56 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-16 05:28:48 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 05:39:18 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 05:40:40 +0200famubu(~julinuser@user/famubu) (Quit: leaving)
2025-04-16 05:44:00 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 05:45:08 +0200dutchie(~dutchie@user/dutchie) (Remote host closed the connection)
2025-04-16 05:46:09 +0200j1n37-(~j1n37@user/j1n37) j1n37
2025-04-16 05:46:11 +0200dutchie(~dutchie@user/dutchie) dutchie
2025-04-16 05:46:45 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 244 seconds)
2025-04-16 05:50:33 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 265 seconds)
2025-04-16 05:51:13 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf
2025-04-16 05:54:09 +0200michalz(~michalz@185.246.207.197)
2025-04-16 05:56:05 +0200euleritian(~euleritia@95.90.214.149) (Read error: Connection reset by peer)
2025-04-16 05:57:05 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 05:57:09 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 06:04:09 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-16 06:16:28 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 06:21:07 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-16 06:33:41 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 06:37:34 +0200JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-04-16 06:38:09 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 06:42:50 +0200amadaluzia(~amadaluzi@user/amadaluzia) (Ping timeout: 260 seconds)
2025-04-16 06:49:43 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 06:50:34 +0200talismanick(~user@2601:644:937c:ed10::ae5) (Remote host closed the connection)
2025-04-16 06:54:04 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 07:03:43 +0200j1n37-(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-16 07:05:43 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 07:07:03 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 07:11:48 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2025-04-16 07:12:14 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-04-16 07:12:59 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 07:17:58 +0200takuan(~takuan@d8D86B601.access.telenet.be)
2025-04-16 07:21:37 +0200sp1ff(~user@c-67-160-173-55.hsd1.wa.comcast.net) sp1ff
2025-04-16 07:22:54 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds)
2025-04-16 07:23:05 +0200euleritian(~euleritia@dynamic-176-002-180-095.176.2.pool.telefonica.de)
2025-04-16 07:23:25 +0200euleritian(~euleritia@dynamic-176-002-180-095.176.2.pool.telefonica.de) (Read error: Connection reset by peer)
2025-04-16 07:23:42 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 07:24:04 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 07:28:20 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2025-04-16 07:28:40 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 07:29:11 +0200euleritian(~euleritia@dynamic-176-002-180-095.176.2.pool.telefonica.de)
2025-04-16 07:31:21 +0200JuanDaughertyColinRobinson
2025-04-16 07:38:26 +0200ColinRobinsonJuanDaugherty
2025-04-16 07:40:16 +0200jmcantrell(~weechat@user/jmcantrell) (Ping timeout: 252 seconds)
2025-04-16 07:40:16 +0200jmcantrell_jmcantrell
2025-04-16 07:41:12 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 07:42:10 +0200__jmcantrell__(~weechat@user/jmcantrell) jmcantrell
2025-04-16 07:47:31 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-16 07:48:00 +0200Feuermagier(~Feuermagi@user/feuermagier) Feuermagier
2025-04-16 07:48:05 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 07:51:59 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 252 seconds)
2025-04-16 07:55:24 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-16 07:56:31 +0200hurricane_sam(~halloy304@2001:569:76fd:b00:c916:45b:5a2a:d00)
2025-04-16 07:57:18 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:322:62f9:6518:a6a8) (Remote host closed the connection)
2025-04-16 08:01:48 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 08:02:29 +0200amadaluzia(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-16 08:02:46 +0200JuanDaughertyColinRobinson
2025-04-16 08:06:24 +0200ColinRobinson(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-04-16 08:06:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-16 08:09:14 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 08:09:19 +0200__jmcantrell__(~weechat@user/jmcantrell) (Quit: WeeChat 4.6.1)
2025-04-16 08:14:09 +0200haritz(~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
2025-04-16 08:14:35 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-16 08:16:41 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:322:62f9:6518:a6a8) hgolden
2025-04-16 08:19:54 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 265 seconds)
2025-04-16 08:25:02 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 08:27:52 +0200tromp(~textual@2001:1c00:3487:1b00:c0e6:9a43:de22:8c0a)
2025-04-16 08:28:57 +0200takuan(~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection)
2025-04-16 08:29:45 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 08:40:00 +0200poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 08:40:28 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 08:41:50 +0200poscat(~poscat@user/poscat) poscat
2025-04-16 08:44:26 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2025-04-16 08:45:00 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 08:46:43 +0200CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2025-04-16 08:47:04 +0200aaronv(~aaronv@user/aaronv) aaronv
2025-04-16 08:48:34 +0200hidjgr(~hidjgr@user/hidjgr) (Quit: WeeChat 4.4.2)
2025-04-16 08:50:58 +0200hidjgr(~hidjgr@68.52.120.78.rev.sfr.net)
2025-04-16 08:51:06 +0200hidjgr(~hidjgr@68.52.120.78.rev.sfr.net) (Client Quit)
2025-04-16 08:51:44 +0200hidjgr(~hidjgr@68.52.120.78.rev.sfr.net)
2025-04-16 08:51:49 +0200acidjnk(~acidjnk@p200300d6e71c4f5865559714f8604ffa.dip0.t-ipconnect.de) acidjnk
2025-04-16 08:52:12 +0200hidjgr(~hidjgr@68.52.120.78.rev.sfr.net) (Changing host)
2025-04-16 08:52:12 +0200hidjgr(~hidjgr@user/hidjgr) hidjgr
2025-04-16 08:52:54 +0200hidjgr(~hidjgr@user/hidjgr) (Client Quit)
2025-04-16 08:53:12 +0200hidjgr(~hidjgr@68.52.120.78.rev.sfr.net)
2025-04-16 08:53:19 +0200hidjgr(~hidjgr@68.52.120.78.rev.sfr.net) (Client Quit)
2025-04-16 08:53:36 +0200hidjgr(~hidjgr@68.52.120.78.rev.sfr.net)
2025-04-16 08:53:36 +0200hidjgr(~hidjgr@68.52.120.78.rev.sfr.net) (Changing host)
2025-04-16 08:53:36 +0200hidjgr(~hidjgr@user/hidjgr) hidjgr
2025-04-16 08:57:10 +0200sord937(~sord937@gateway/tor-sasl/sord937) sord937
2025-04-16 08:57:18 +0200sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2025-04-16 08:57:36 +0200sord937(~sord937@gateway/tor-sasl/sord937) sord937
2025-04-16 08:58:23 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-16 08:58:44 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 08:59:03 +0200alecs(~alecs@nat16.software.imdea.org) alecs
2025-04-16 09:00:01 +0200caconym(~caconym@user/caconym) (Quit: bye)
2025-04-16 09:01:01 +0200caconym(~caconym@user/caconym) caconym
2025-04-16 09:03:07 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 09:03:34 +0200weary-traveler(~user@user/user363627) (Remote host closed the connection)
2025-04-16 09:04:49 +0200TMA(tma@twin.jikos.cz) (Ping timeout: 272 seconds)
2025-04-16 09:07:46 +0200rvalue-(~rvalue@user/rvalue) rvalue
2025-04-16 09:08:33 +0200rvalue(~rvalue@user/rvalue) (Ping timeout: 248 seconds)
2025-04-16 09:10:10 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 09:12:47 +0200alecs(~alecs@nat16.software.imdea.org) (Quit: Client closed)
2025-04-16 09:14:31 +0200rvalue-rvalue
2025-04-16 09:15:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 09:18:09 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 252 seconds)
2025-04-16 09:19:10 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2025-04-16 09:19:37 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2025-04-16 09:20:31 +0200Lord_of_Life_Lord_of_Life
2025-04-16 09:24:36 +0200ft(~ft@p4fc2a6e6.dip0.t-ipconnect.de) (Quit: leaving)
2025-04-16 09:26:25 +0200euleritian(~euleritia@dynamic-176-002-180-095.176.2.pool.telefonica.de) (Read error: Connection reset by peer)
2025-04-16 09:26:44 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 09:27:17 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 09:31:01 +0200zmt01(~zmt00@user/zmt00) (Read error: Connection reset by peer)
2025-04-16 09:31:26 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2025-04-16 09:34:45 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-16 09:37:25 +0200causal(~eric@50.35.84.231) (Quit: WeeChat 4.5.1)
2025-04-16 09:40:43 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2025-04-16 09:42:53 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 09:43:06 +0200ljdarj(~Thunderbi@user/ljdarj) (Client Quit)
2025-04-16 09:43:57 +0200emmanuelux(~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer)
2025-04-16 09:45:30 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 09:48:50 +0200forell_(~forell@host-178-216-90-220.sta.tvknaszapraca.pl) (Ping timeout: 265 seconds)
2025-04-16 09:50:06 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 09:56:56 +0200machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2025-04-16 09:58:12 +0200hidjgrtestnick
2025-04-16 09:58:48 +0200todi(~todi@p57803331.dip0.t-ipconnect.de) (Remote host closed the connection)
2025-04-16 09:59:10 +0200testnickhidjgr
2025-04-16 09:59:58 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 10:02:13 +0200todi(~todi@p57803331.dip0.t-ipconnect.de) todi
2025-04-16 10:02:40 +0200delyan_(sid523379@id-523379.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2025-04-16 10:04:18 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 265 seconds)
2025-04-16 10:04:39 +0200roconnor(~quassel@rocq/roconnor) (Ping timeout: 252 seconds)
2025-04-16 10:04:59 +0200roconnor(~quassel@rocq/roconnor) roconnor
2025-04-16 10:05:12 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 10:07:14 +0200todi(~todi@p57803331.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2025-04-16 10:08:38 +0200todi(~todi@p57803331.dip0.t-ipconnect.de) todi
2025-04-16 10:08:41 +0200todi(~todi@p57803331.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2025-04-16 10:10:43 +0200todi(~todi@p57803331.dip0.t-ipconnect.de) todi
2025-04-16 10:11:10 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 10:13:25 +0200nacation(~m-3l4s76@user/nacation) (Read error: Connection reset by peer)
2025-04-16 10:15:08 +0200gmg(~user@user/gehmehgeh) gehmehgeh
2025-04-16 10:17:31 +0200nacation(~m-3l4s76@user/nacation) nacation
2025-04-16 10:19:24 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 10:24:29 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2025-04-16 10:25:43 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-16 10:33:46 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 10:37:14 +0200chele(~chele@user/chele) chele
2025-04-16 10:38:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 10:45:16 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 10:45:30 +0200__monty__(~toonn@user/toonn) toonn
2025-04-16 10:45:35 +0200pabs3(~pabs3@user/pabs3) (Read error: Connection reset by peer)
2025-04-16 10:46:27 +0200pabs3(~pabs3@user/pabs3) pabs3
2025-04-16 10:47:21 +0200cheater(~Username@user/cheater) cheater
2025-04-16 10:48:49 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 248 seconds)
2025-04-16 10:50:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 10:50:32 +0200econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2025-04-16 10:54:42 +0200 <bwe> Hi again, which simpler State Monad tutorial can you recommend other than Bragilevsky's (which uses random or implementing a RPN calculator)?
2025-04-16 11:01:50 +0200mrmr(~mrmr@user/mrmr) mrmr
2025-04-16 11:03:56 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 11:04:23 +0200rosco(~rosco@183.171.73.8) rosco
2025-04-16 11:04:48 +0200rosco(~rosco@183.171.73.8) (Read error: Connection reset by peer)
2025-04-16 11:04:58 +0200rosco(~rosco@2001:e68:5442:b896:2437:120f:9971:a543) rosco
2025-04-16 11:09:37 +0200aaronv(~aaronv@user/aaronv) (Ping timeout: 252 seconds)
2025-04-16 11:11:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 11:12:11 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 11:16:23 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-16 11:17:16 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 11:20:33 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 252 seconds)
2025-04-16 11:29:49 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 11:34:01 +0200tromp(~textual@2001:1c00:3487:1b00:c0e6:9a43:de22:8c0a) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-04-16 11:34:41 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 11:43:12 +0200amadaluzia_(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-16 11:45:15 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 11:49:56 +0200forell(~forell@user/forell) forell
2025-04-16 11:50:15 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 11:50:54 +0200 <haskellbridge> <Morj> Whic RPC schemes are you familiar with? I can name grpc, json-rpc, json over http
2025-04-16 11:51:34 +0200 <haskellbridge> <Morj> Ughh xml over http is a thing too, and I know there are xml-over-something older than that that I never used
2025-04-16 11:51:45 +0200 <haskellbridge> <Morj> What are some things more modern and cool?
2025-04-16 11:51:52 +0200 <[exa]> remote lambda application
2025-04-16 11:52:36 +0200 <[exa]> bwe: tbh I'd recommend just biting the bullet and trying to reimplement the thing yourself, it's most effective
2025-04-16 11:52:40 +0200 <haskellbridge> <Morj> That sounds more like an idea than a concrete rpc with a library and shit :]
2025-04-16 11:53:34 +0200 <[exa]> bwe: as the initial hint you get the information that stateful functions can be represented as (s -> (result, s)), possibly with more parameters such as (a->b->s->(result, s)), then you add Functor Applicative Monad instances and eventually it just works
2025-04-16 11:54:28 +0200 <[exa]> Morj: yeah but it's lovable no? why do you need RPC in 2025?
2025-04-16 11:56:14 +0200xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 245 seconds)
2025-04-16 11:56:19 +0200 <haskellbridge> <Morj> Indeed, why do I
2025-04-16 11:56:39 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 245 seconds)
2025-04-16 11:57:26 +0200 <haskellbridge> <Morj> I'm actually looking for a replacement for our grpc which supports backwards connections: it's a server that establishes the connection to the client, and then the client sends requests
2025-04-16 11:57:45 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess
2025-04-16 11:59:03 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
2025-04-16 11:59:22 +0200euleritian(~euleritia@176.2.178.231)
2025-04-16 11:59:51 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-04-16 12:01:44 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 260 seconds)
2025-04-16 12:02:43 +0200lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2025-04-16 12:02:50 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 12:03:02 +0200euleritian(~euleritia@176.2.178.231) (Read error: Connection reset by peer)
2025-04-16 12:03:27 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 12:04:17 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 12:06:55 +0200turlando(~turlando@user/turlando) turlando
2025-04-16 12:07:45 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 12:13:12 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 12:17:04 +0200CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 245 seconds)
2025-04-16 12:18:19 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 12:23:39 +0200 <[exa]> Morj: how much other programs do you need to talk to it?
2025-04-16 12:24:21 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2025-04-16 12:24:34 +0200 <[exa]> (other than that it's probably quite easy to do the server&client layer with a bit of haskell. streaming libraries can help you with parsing the command stream)
2025-04-16 12:25:18 +0200euleritian(~euleritia@dynamic-176-002-178-231.176.2.pool.telefonica.de)
2025-04-16 12:30:12 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 12:30:39 +0200Digit(~user@user/digit) (Remote host closed the connection)
2025-04-16 12:32:00 +0200gmg(~user@user/gehmehgeh) (Ping timeout: 264 seconds)
2025-04-16 12:32:31 +0200gmg(~user@user/gehmehgeh) gehmehgeh
2025-04-16 12:35:22 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 12:35:47 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 12:39:07 +0200Digit(~user@user/digit) Digit
2025-04-16 12:40:41 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2025-04-16 12:43:10 +0200__monty__(~toonn@user/toonn) (Ping timeout: 276 seconds)
2025-04-16 12:45:46 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 12:52:33 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 12:53:28 +0200xff0x(~xff0x@2405:6580:b080:900:121f:92ea:5a7d:afb)
2025-04-16 13:00:10 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac
2025-04-16 13:04:45 +0200jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net)
2025-04-16 13:06:46 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 13:07:58 +0200jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net) (Client Quit)
2025-04-16 13:11:20 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 13:13:46 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2025-04-16 13:14:12 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 13:15:00 +0200haritz(~hrtz@152.37.68.178)
2025-04-16 13:15:00 +0200haritz(~hrtz@152.37.68.178) (Changing host)
2025-04-16 13:15:00 +0200haritz(~hrtz@user/haritz) haritz
2025-04-16 13:18:55 +0200 <haskellbridge> <Morj> [exa] Yeah that's the problem: the other part will be written by the other team in typescript >_<
2025-04-16 13:19:05 +0200Digit(~user@user/digit) (Remote host closed the connection)
2025-04-16 13:19:08 +0200 <haskellbridge> <Morj> So I would prefer something at least known
2025-04-16 13:19:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 13:21:40 +0200Digit(~user@user/digit) Digit
2025-04-16 13:25:45 +0200__monty__(~toonn@user/toonn) toonn
2025-04-16 13:27:29 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-16 13:29:49 +0200xff0x(~xff0x@2405:6580:b080:900:121f:92ea:5a7d:afb) (Ping timeout: 252 seconds)
2025-04-16 13:31:17 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 13:31:54 +0200 <[exa]> Morj: so you'd like something like Servant that can generate typescript bindings automagically?
2025-04-16 13:32:05 +0200 <[exa]> btw typescript ain't bad, not even remotely the worst choice :D
2025-04-16 13:32:59 +0200 <haskellbridge> <Morj> Well, I doubt that I will find a second servant, though it would be nice. I'm thinking a protobuf-like spec is most likely to exist
2025-04-16 13:34:44 +0200 <haskellbridge> <Morj> For now I'm playing around with protobuf in reverse: replace "rpc CoolFunc(CoolArg) returns (CoolRet)" with "rpc CoolFuncR(stream CoolRet) returns (stream CoolArg)" - you call CoolFuncR, await the argument from the stream, and send the return through you own stream back
2025-04-16 13:35:32 +0200 <[exa]> stupid idea: check what Servant uses to generate the js bindings, check reverse dependencies of that package, find other packages that generate some bindings for js
2025-04-16 13:36:28 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 13:36:58 +0200 <[exa]> (as in, I solved most of my software choices that way)
2025-04-16 13:39:31 +0200 <haskellbridge> <Morj> Mm, it uses servant-typescript, which is used by nothing (-:
2025-04-16 13:39:37 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2025-04-16 13:40:08 +0200 <haskellbridge> <Morj> And servant-typescript generates code using "string-interpolate", not very useful
2025-04-16 13:43:44 +0200 <[exa]> ok well, I hoped there's an intermediate package there
2025-04-16 13:44:06 +0200 <[exa]> (this apparent failure guarantees more luck next time!)
2025-04-16 13:47:43 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 13:52:17 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 248 seconds)
2025-04-16 13:52:44 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 13:54:51 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 13:55:19 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 276 seconds)
2025-04-16 14:01:03 +0200poscat(~poscat@user/poscat) (Remote host closed the connection)
2025-04-16 14:03:26 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 14:05:00 +0200koz(~koz@121.99.240.58) (Ping timeout: 272 seconds)
2025-04-16 14:07:58 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 14:10:23 +0200jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) jespada
2025-04-16 14:11:01 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 248 seconds)
2025-04-16 14:11:50 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 14:12:01 +0200amadaluzia_(~amadaluzi@user/amadaluzia) (Quit: Hi, this is Paul Allen. I'm being called away to London for a few days. Meredith, I'll call you when I get back. Hasta la vista, baby.)
2025-04-16 14:12:29 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-16 14:15:14 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 14:17:50 +0200 <haskellbridge> <eldritchcookie> hello is there any dependency light way for equivalents of System.Environment on OsString?
2025-04-16 14:17:59 +0200amadaluzia_(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-16 14:19:31 +0200euleritian(~euleritia@dynamic-176-002-178-231.176.2.pool.telefonica.de) (Read error: Connection reset by peer)
2025-04-16 14:19:51 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 14:19:59 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-16 14:22:05 +0200 <bwe> [exa]: https://github.com/benjaminweb/state-monad/blob/main/src/MyLib.hs
2025-04-16 14:23:05 +0200 <[exa]> bwe: ok good, first you'll want to make instances on that so you need some kind of type tag for the "function" in your type there
2025-04-16 14:23:29 +0200 <[exa]> usually we do with `data` or `newtype`, in this case `newtype State ... = State (.. -> ..)` is probably the way
2025-04-16 14:24:03 +0200 <[exa]> (doing instances on `type` aliases is .... well, complicated)
2025-04-16 14:24:32 +0200 <[exa]> anyway the rest of that seems ok
2025-04-16 14:25:26 +0200 <[exa]> in particular the last line is basically what you just throw to the monad instance and it should work
2025-04-16 14:27:19 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2025-04-16 14:27:56 +0200 <[exa]> bwe: as the next task try to think how to implement "set state" function and "get state" function
2025-04-16 14:28:06 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 14:28:39 +0200 <[exa]> (the types of these should be roughly `s -> State s ()` and `State s s`, respectively)
2025-04-16 14:29:10 +0200xff0x(~xff0x@2405:6580:b080:900:1f70:b482:b471:6289)
2025-04-16 14:30:00 +0200poscat(~poscat@user/poscat) poscat
2025-04-16 14:32:48 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 14:37:28 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 14:41:07 +0200koz(~koz@121.99.240.58)
2025-04-16 14:41:43 +0200jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
2025-04-16 14:46:13 +0200jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) jespada
2025-04-16 14:46:24 +0200 <bwe> [exa]: that's interesting, shifting from type alias to newtype is bringing me headaches. The function body of the bind does not compile anymore, wherever I try to put State as data constructor.
2025-04-16 14:48:50 +0200 <[exa]> yes you suddenly have to remove&add the "type tag" everywhere
2025-04-16 14:49:13 +0200 <[exa]> which is annoying but that ensures that the typesystem can actually work with your stateful computation s->(s,a) specially, not just like some other function
2025-04-16 14:49:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 14:50:02 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2025-04-16 14:50:25 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds)
2025-04-16 14:50:34 +0200amadaluzia(~amadaluzi@user/amadaluzia) (Ping timeout: 276 seconds)
2025-04-16 14:50:41 +0200 <bwe> So, I am starting now with: newtype State s a = State (s -> (a, s))
2025-04-16 14:50:58 +0200amadaluzia(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-16 14:51:07 +0200 <bwe> coming from: type State s a = (s -> (a, s))
2025-04-16 14:54:35 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 15:00:54 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 15:07:02 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 15:08:45 +0200skiwould use `newtype State s a = MkState (s -> (a,s))', for clarity
2025-04-16 15:08:59 +0200Guest38(~Guest38@175.143.89.234)
2025-04-16 15:09:44 +0200Guest38(~Guest38@175.143.89.234) ()
2025-04-16 15:10:03 +0200weary-traveler(~user@user/user363627) user363627
2025-04-16 15:10:06 +0200 <ski> .. or `newtype State s a = MkState {runState :: s -> (a,s)}', using record syntax notation to automagically get the projection/selector
2025-04-16 15:11:54 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 15:15:12 +0200Cattycatties
2025-04-16 15:16:17 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 15:18:44 +0200Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu) (Quit: Client closed)
2025-04-16 15:19:12 +0200Googulator82(~Googulato@94-21-172-228.pool.digikabel.hu)
2025-04-16 15:20:59 +0200haritz(~hrtz@user/haritz) (Read error: Connection reset by peer)
2025-04-16 15:21:21 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 15:22:35 +0200gorignak(~gorignak@user/gorignak) (Quit: quit)
2025-04-16 15:23:51 +0200haritz(~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8)
2025-04-16 15:23:51 +0200haritz(~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8) (Changing host)
2025-04-16 15:23:51 +0200haritz(~hrtz@user/haritz) haritz
2025-04-16 15:27:11 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2025-04-16 15:27:15 +0200acidjnk(~acidjnk@p200300d6e71c4f5865559714f8604ffa.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2025-04-16 15:27:36 +0200 <bwe> Functor and Applicative: https://github.com/benjaminweb/state-monad/blob/main/src/MyLib.hs
2025-04-16 15:28:38 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-04-16 15:31:51 +0200 <[exa]> bwe: looks all OK to me
2025-04-16 15:32:11 +0200 <[exa]> bwe: for the monad instance the only thing you might need to do is to unpack the `f` from State, and repack the result
2025-04-16 15:33:57 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 15:34:17 +0200 <ski> -- fmap :: (a -> b) -> State (s -> (a, s)) -> State (s -> (b, s))
2025-04-16 15:34:18 +0200 <ski> should be
2025-04-16 15:34:28 +0200 <ski> -- fmap :: (a -> b) -> (s -> (a,s)) -> (s -> (b,s))
2025-04-16 15:35:00 +0200jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net)
2025-04-16 15:35:06 +0200 <ski> similarly
2025-04-16 15:35:08 +0200 <ski> -- <*> :: MkState (s0 -> (a -> b, s1)) -> MkState (s0 -> (a, s1)) -> MkState (s0 -> (b, s1))
2025-04-16 15:35:11 +0200 <ski> should be
2025-04-16 15:35:55 +0200 <ski> -- <*> :: (s0 -> (a -> b,s1)) -> (s0 -> (a,s1)) -> (s0 -> (b,s1)) -- well, actually not quite this, either. can you see why ?
2025-04-16 15:36:36 +0200 <bwe> [exa]: updated. includes Monad definition now, however I don't use the s1 yet, I should, right?
2025-04-16 15:37:47 +0200ystael(~ystael@user/ystael) ystael
2025-04-16 15:38:08 +0200 <ski> if you add
2025-04-16 15:38:17 +0200 <ski> {-# LANGUAGE InstanceSigs #-}
2025-04-16 15:38:35 +0200 <ski> to the first line, you can uncomment one of the type signatures, for each method of each instance
2025-04-16 15:39:24 +0200 <ski> (<*>) (MkState f) (MkState g) = ..f..g..
2025-04-16 15:39:31 +0200 <ski> also could be written as
2025-04-16 15:39:40 +0200 <ski> MkState f <*> MkState g = ..f..g..
2025-04-16 15:40:35 +0200 <bwe> ski: puh, I don't get why the type signatures should be (s -> (a, s)) for Functor, wh?
2025-04-16 15:40:58 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 15:41:21 +0200 <ski> `State (s -> (a, s))' makes no sense, here
2025-04-16 15:41:55 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds)
2025-04-16 15:41:56 +0200 <ski> `fmap :: (a -> b) -> (s -> (a,s)) -> (s -> (b,s))' also, strictly speaking, isn't correct. but it's the type signature you'd get, if you were able to use `type State s a = (s -> (a,s))'
2025-04-16 15:42:07 +0200euleritian(~euleritia@dynamic-176-002-178-231.176.2.pool.telefonica.de)
2025-04-16 15:44:49 +0200 <ski> the definition of `(>>=)' isn't quite correct, but i guess you knew that
2025-04-16 15:45:29 +0200 <ski> ah, you updated it
2025-04-16 15:45:32 +0200 <ski> -- (>>=) :: Monad m => MkState (s -> (a, s)) -> (a -> MkState (s -> (b, s))) -> MkState (s -> (b, s))
2025-04-16 15:45:36 +0200 <ski> this makes no sense
2025-04-16 15:46:15 +0200 <ski> `MkState' is value-level (a data constructor), it's not type-level. so it makes no sense to mention it in the type signature
2025-04-16 15:46:33 +0200 <ski> presumably the notation
2025-04-16 15:46:34 +0200 <ski> newtype State s a = MkState (s -> (a, s))
2025-04-16 15:46:42 +0200 <ski> here is what's confusing
2025-04-16 15:47:02 +0200dutchie(~dutchie@user/dutchie) (Remote host closed the connection)
2025-04-16 15:47:19 +0200 <ski> this notation does not mean that the type `State s a' is equal to the "type" `MkState (s -> (a, s))' (this is not a type)
2025-04-16 15:47:20 +0200dutchie(~dutchie@user/dutchie) dutchie
2025-04-16 15:48:06 +0200 <ski> what this (BNF-inspired) notation *actually* means, is that if `x' has type `s -> (a,s)', then `MkState x' has type `State s a'
2025-04-16 15:48:32 +0200 <ski> in symbols, if `x :: s -> (a,s)', then `MkState x :: State s a'
2025-04-16 15:48:45 +0200 <ski> which you can abbreviate as
2025-04-16 15:48:57 +0200 <ski> MkState :: (s -> (a,s)) -> State s a
2025-04-16 15:49:35 +0200 <bwe> [exa]: >>= is now defined, incorporating s1
2025-04-16 15:49:50 +0200 <bwe> ski: how are the type signatures now?
2025-04-16 15:50:25 +0200 <ski> the definition of `(>>=)' is still not right
2025-04-16 15:50:57 +0200amadaluzia(~amadaluzi@user/amadaluzia) (Ping timeout: 244 seconds)
2025-04-16 15:51:12 +0200 <ski> -- fmap :: (a -> b) -> MkState (s0 -> (a, s1)) -> MkState (s0 -> (l, s1))
2025-04-16 15:51:16 +0200 <ski> is not any better than
2025-04-16 15:51:17 +0200 <ski> -- fmap :: (a -> b) -> State (s -> (a, s)) -> State (s -> (b, s))
2025-04-16 15:52:01 +0200 <ski> (good that you added brackets around `<*>', in the type signatures. was wondering whether i had to point that out)
2025-04-16 15:52:31 +0200 <bwe> Instance Type Signatures were a good idea btw.
2025-04-16 15:52:42 +0200 <ski> yes
2025-04-16 15:52:46 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 15:52:47 +0200amadaluzia_(~amadaluzi@user/amadaluzia) (Ping timeout: 265 seconds)
2025-04-16 15:52:49 +0200 <ski> this last definition of `(>>=)' is fine
2025-04-16 15:53:20 +0200 <ski> i still would like you to remove all mentions of `MkState ' from the type signatures
2025-04-16 15:53:49 +0200 <ski> after `::', you're writing types. `MkState' is not a type, it does not belong there
2025-04-16 15:54:23 +0200 <bwe> ok, let me try to get it right :).
2025-04-16 15:54:47 +0200 <ski> (and then there's the issue with `s0' and `s1' in the signature for `(<*>)')
2025-04-16 15:55:11 +0200 <ski> (you also changed one `b' to `l', for unclear reasons)
2025-04-16 15:55:43 +0200JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-04-16 15:55:48 +0200 <ski> ah, imho you should also remove the remaining `Monad m => '
2025-04-16 15:56:05 +0200 <ski> @src Monad
2025-04-16 15:56:06 +0200 <lambdabot> class Applicative m => Monad m where
2025-04-16 15:56:06 +0200 <lambdabot> -- Note: Applicative wasn't a superclass before GHC 7.10
2025-04-16 15:56:06 +0200 <lambdabot> (>>=) :: m a -> (a -> m b) -> m b
2025-04-16 15:56:06 +0200 <lambdabot> (>>) :: m a -> m b -> m b
2025-04-16 15:56:08 +0200 <lambdabot> return :: a -> m a
2025-04-16 15:56:10 +0200 <lambdabot> fail :: String -> m a
2025-04-16 15:56:18 +0200 <ski> note that this does not mention any `Monad => ' in the type signatures of the methods here
2025-04-16 15:56:33 +0200 <ski> that's implied, implicit, due to them being methods of `Monad m', here
2025-04-16 15:57:31 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 15:59:13 +0200acidjnk(~acidjnk@p200300d6e71c4f4138f4856942b014fc.dip0.t-ipconnect.de) acidjnk
2025-04-16 16:00:16 +0200Digitteknohippie(~user@user/digit) Digit
2025-04-16 16:01:40 +0200Digit(~user@user/digit) (Ping timeout: 260 seconds)
2025-04-16 16:02:44 +0200 <bwe> ski: updated. though, the level where I tried to collapse types into data constructors really helped me to deconstruct and see the components!
2025-04-16 16:05:45 +0200Digitteknohippie(~user@user/digit) (Ping timeout: 260 seconds)
2025-04-16 16:05:50 +0200 <ski> dunno why you changed `>>=' from being defined infix, to being defined prefix, though
2025-04-16 16:06:36 +0200 <ski> and the `s0' and `s1' in the signatures is still incorrect
2025-04-16 16:08:14 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 16:12:29 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-16 16:13:25 +0200JuanDaughertyColinRobinson
2025-04-16 16:17:16 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 16:17:21 +0200mange(~user@user/mange) (Quit: Zzz...)
2025-04-16 16:18:56 +0200Square2(~Square4@user/square) (Remote host closed the connection)
2025-04-16 16:18:59 +0200Digit(~user@user/digit) Digit
2025-04-16 16:19:01 +0200forell(~forell@user/forell) (Quit: ZNC - https://znc.in)
2025-04-16 16:19:19 +0200forell(~forell@user/forell) forell
2025-04-16 16:19:36 +0200Square2(~Square4@user/square) Square
2025-04-16 16:21:42 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) fp
2025-04-16 16:22:26 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-04-16 16:23:30 +0200hc(~hc@mail.hce.li) hc
2025-04-16 16:33:57 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 16:35:06 +0200fp(~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 272 seconds)
2025-04-16 16:35:07 +0200Square2(~Square4@user/square) (Ping timeout: 272 seconds)
2025-04-16 16:39:12 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 16:49:32 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 16:50:30 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess
2025-04-16 16:50:34 +0200Digitdigitteknohippie
2025-04-16 16:50:43 +0200digitteknohippieDigit
2025-04-16 16:54:43 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 16:56:23 +0200 <bwe> s /away
2025-04-16 16:57:05 +0200 <bwe> ski: do you mean the numbers should go away or the way the numbers are currently is incorrect?
2025-04-16 17:04:34 +0200notdabs(~Owner@2600:1700:69cf:9000:e035:2729:333c:ea)
2025-04-16 17:05:00 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 17:09:41 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 17:13:26 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2025-04-16 17:14:49 +0200__jmcantrell__(~weechat@user/jmcantrell) jmcantrell
2025-04-16 17:14:55 +0200jmcantrell(644f1bed9a@user/jmcantrell) (Killed (erbium.libera.chat (Nickname regained by services)))
2025-04-16 17:14:55 +0200__jmcantrell__jmcantrell
2025-04-16 17:15:04 +0200jmcantrell_(644f1bed9a@user/jmcantrell) jmcantrell
2025-04-16 17:15:36 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 276 seconds)
2025-04-16 17:18:09 +0200euleritian(~euleritia@dynamic-176-002-178-231.176.2.pool.telefonica.de) (Read error: Connection reset by peer)
2025-04-16 17:18:16 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 17:18:29 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 17:18:30 +0200 <bwe> [exa]: set & get implemented: https://github.com/benjaminweb/state-monad/blob/main/src/MyLib.hs
2025-04-16 17:24:30 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 17:24:35 +0200 <[exa]> bwe: o great
2025-04-16 17:25:12 +0200 <[exa]> bwe: so essentially what you need now is some helper tool for the "users" that allows you to run the state (starting with some initial state), e.g. `evalState :: State s a -> s -> a` or so
2025-04-16 17:25:28 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 17:27:09 +0200 <[exa]> bwe: as a good test you can try something like: stateSum xs = evalState 0 $ traverse (\x -> get >>= set . (+x)) xs
2025-04-16 17:28:38 +0200 <[exa]> or a simpler sanity-check-kindof-test: `evalState 'a' (put 'b' >> get)` should return 'b'
2025-04-16 17:30:57 +0200bweadded evalState
2025-04-16 17:31:02 +0200 <[exa]> bwe: small notes: you don't need to define `return` (it's defaulted from `pure`), and in definitions it's quite pretty to use infix operators, such as: `MkState f <*> MkState a = ...`
2025-04-16 17:31:32 +0200 <[exa]> bwe: looks right
2025-04-16 17:32:20 +0200 <[exa]> bwe: btw people normally define a `runState` kinda implicitly, with saying something like: newtype State s a = MkState { runState :: s -> (a,s) }
2025-04-16 17:32:29 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) kuribas
2025-04-16 17:32:57 +0200 <[exa]> conveniently, then you get the "accessor" with type `runState :: State s a -> s -> (a,s)` which is almost evalState. :)
2025-04-16 17:35:02 +0200 <[exa]> oh noes I'm using flipped `evalState` in the examples, sorry :D
2025-04-16 17:36:42 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 17:37:40 +0200 <[exa]> bwe: ok my examples are actually super wrong but fixing them to a working state might become a good exercise (in both cases you need one `flip`, and in the one case you need to return state instead of the (redundant) return value)
2025-04-16 17:38:31 +0200 <[exa]> (sorry for the mess, I'm doing cellphone haskell rn :D)
2025-04-16 17:41:14 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 17:45:34 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 252 seconds)
2025-04-16 17:52:17 +0200 <bwe> [exa]: evalState (set 42 >> get) 0 -- outputs 42
2025-04-16 17:52:17 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds)
2025-04-16 17:53:05 +0200euleritian(~euleritia@176.2.178.231)
2025-04-16 17:53:19 +0200bwehas updated https://github.com/benjaminweb/state-monad/blob/main/src/MyLib.hs to include evalState and runState now.
2025-04-16 17:53:46 +0200 <bwe> ski: also, <*> and >>= are defined by infix notation.
2025-04-16 17:54:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 17:58:52 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 17:59:10 +0200zmt00(~zmt00@user/zmt00) zmt00
2025-04-16 18:01:41 +0200chele(~chele@user/chele) (Remote host closed the connection)
2025-04-16 18:03:38 +0200 <ski> `(MkState f) <*> (MkState g)' can be just `MkState f <*> MkState g'
2025-04-16 18:03:43 +0200 <ski> bwe : "do you mean the numbers should go away or the way the numbers are currently is incorrect?" -- both
2025-04-16 18:06:54 +0200ColinRobinson(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-04-16 18:06:58 +0200amadaluzia(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-16 18:07:37 +0200 <bwe> ski: fixed
2025-04-16 18:07:41 +0200 <ski> bwe : another exercise, define a reasonable type `Tree' of trees (you should be able to make it a `Functor'), and then define `label :: Tree a -> Tree (Integer,a)', numbering every element with a running index, starting at `0', counting upwards
2025-04-16 18:08:33 +0200 <ski> you could make two definitions of `label', one "direct", and one using your `State'
2025-04-16 18:09:17 +0200 <ski> (it might help to define a `tick :: State Integer Integer', that yields the current count, while also post-incrementing it)
2025-04-16 18:12:11 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 18:17:41 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 18:18:17 +0200 <bwe> ski: nice one, will try later :). -- but as far as the State Monad implementation concerned, is that it?
2025-04-16 18:19:19 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 18:21:18 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2025-04-16 18:22:13 +0200inca(~inca@71.30.233.213) (Ping timeout: 248 seconds)
2025-04-16 18:23:51 +0200 <ski> you still have redundant brackets in the definition of `>>='
2025-04-16 18:24:24 +0200 <ski> otherwise, yes
2025-04-16 18:24:40 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-04-16 18:26:16 +0200kadobanana(~mud@user/kadoban) kadoban
2025-04-16 18:26:39 +0200mud(~mud@user/kadoban) (Ping timeout: 245 seconds)
2025-04-16 18:28:01 +0200kilolympus6(~kilolympu@vmi1102682.contaboserver.net) kilolympus
2025-04-16 18:28:04 +0200kilolympus(~kilolympu@vmi1102682.contaboserver.net) (Read error: Connection reset by peer)
2025-04-16 18:28:05 +0200kilolympus6kilolympus
2025-04-16 18:30:07 +0200inca(~inca@71.30.233.213)
2025-04-16 18:34:56 +0200inca(~inca@71.30.233.213) (Ping timeout: 268 seconds)
2025-04-16 18:35:05 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 18:35:21 +0200inca(~inca@71.30.233.213)
2025-04-16 18:42:29 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 18:42:58 +0200inca(~inca@71.30.233.213) (Ping timeout: 268 seconds)
2025-04-16 18:48:15 +0200inca(~inca@h213.233.30.71.dynamic.ip.windstream.net)
2025-04-16 18:48:46 +0200ft(~ft@p4fc2a6e6.dip0.t-ipconnect.de) ft
2025-04-16 18:54:01 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla
2025-04-16 18:54:01 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-16 18:54:26 +0200fp(~Thunderbi@cig3.wlan.kyla.fi) fp
2025-04-16 18:55:08 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 18:55:45 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds)
2025-04-16 18:57:14 +0200rosco(~rosco@2001:e68:5442:b896:2437:120f:9971:a543) (Quit: Gotta go.)
2025-04-16 18:59:19 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 19:04:29 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds)
2025-04-16 19:05:31 +0200kilolympus(~kilolympu@vmi1102682.contaboserver.net) (Quit: Ping timeout (120 seconds))
2025-04-16 19:05:51 +0200kilolympus(~kilolympu@vmi1102682.contaboserver.net) kilolympus
2025-04-16 19:11:57 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 19:16:19 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 19:18:07 +0200 <[exa]> bwe: hey ok good job
2025-04-16 19:18:19 +0200 <[exa]> anyway this is essentially how the standard State in the libraries looks like
2025-04-16 19:18:24 +0200 <tomsmeding> cellphone haskell is best haskell
2025-04-16 19:18:38 +0200 <EvanR> emoji haskell
2025-04-16 19:18:41 +0200fp(~Thunderbi@cig3.wlan.kyla.fi) (Ping timeout: 265 seconds)
2025-04-16 19:19:22 +0200 <EvanR> which was banned from twitter for violating platform rules but direct nazis is ok
2025-04-16 19:19:39 +0200 <EvanR> s/zis/zism/
2025-04-16 19:20:03 +0200 <tomsmeding> bummer that emojis are symbols so if you want emoji variables you have to put them in parens
2025-04-16 19:20:20 +0200 <tomsmeding> % let (🍌) = 42 in (🍌) + (🍌)
2025-04-16 19:20:21 +0200 <yahb2> 84
2025-04-16 19:22:05 +0200 <int-e> . o O ( GHC supports banana brackets now? )
2025-04-16 19:23:08 +0200 <tomsmeding> it doesn't, because a 🍌 is a symbol, so [🍌| 1 + 2 |] doesn't work
2025-04-16 19:23:18 +0200 <EvanR> was emoji haskell a lie?
2025-04-16 19:23:26 +0200 <EvanR> I don't recall so many parentheses
2025-04-16 19:23:48 +0200 <tomsmeding> % let (🍌) = (+) in 2 🍌 4
2025-04-16 19:23:48 +0200 <yahb2> 6
2025-04-16 19:26:23 +0200 <hidjgr> but you can have banana operators
2025-04-16 19:26:55 +0200fp(~Thunderbi@cig3.wlan.kyla.fi) fp
2025-04-16 19:28:00 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 19:31:08 +0200eron(~eron@143.0.15.20) lidenbrock
2025-04-16 19:31:16 +0200 <EvanR> what's the alt code for banana
2025-04-16 19:31:45 +0200 <tomsmeding> https://tomsmeding.com/unicode#banana
2025-04-16 19:31:57 +0200 <EvanR> also I propose redefining emojis so they can be identifiers
2025-04-16 19:32:09 +0200 <EvanR> [banana, kiwi, mango]
2025-04-16 19:32:15 +0200 <tomsmeding> unfortunately ⦅ seems to be neither a valid character nor a valid symbol in haskell
2025-04-16 19:32:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 19:32:41 +0200 <tomsmeding> > Data.Char.generalCategory '⦅'
2025-04-16 19:32:42 +0200 <lambdabot> OpenPunctuation
2025-04-16 19:32:53 +0200 <EvanR> > :t '⦅'
2025-04-16 19:32:55 +0200 <lambdabot> <hint>:1:1: error: parse error on input ‘:’
2025-04-16 19:32:59 +0200 <EvanR> :t '⦅'
2025-04-16 19:33:00 +0200 <lambdabot> Char
2025-04-16 19:33:06 +0200 <EvanR> at least it's a valid character
2025-04-16 19:33:21 +0200 <tomsmeding> well, every unicode codepoint is a valid character
2025-04-16 19:34:22 +0200 <EvanR> every unicode codepoint embeds into Char using chr
2025-04-16 19:34:55 +0200jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net) (Quit: Client closed)
2025-04-16 19:35:09 +0200 <EvanR> don't offend my platonism
2025-04-16 19:35:46 +0200wlhn(~wlhn@2001-14ba-4e20-21f0-b172-6fd9-faec-6e08.rev.dnainternet.fi) wlhn
2025-04-16 19:36:40 +0200Googulator82(~Googulato@94-21-172-228.pool.digikabel.hu) (Quit: Client closed)
2025-04-16 19:36:55 +0200kilolympus(~kilolympu@vmi1102682.contaboserver.net) (Quit: Ping timeout (120 seconds))
2025-04-16 19:37:01 +0200Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu)
2025-04-16 19:37:12 +0200kilolympus(~kilolympu@vmi1102682.contaboserver.net) kilolympus
2025-04-16 19:38:00 +0200 <EvanR> [🍎,🍌,🥒] would fail but at least "🍎,🍌,🥒" is a thing
2025-04-16 19:38:01 +0200 <hidjgr> mfw no cuneiform haskell
2025-04-16 19:38:52 +0200 <EvanR> smh they should have had the foresight in 1990 to make the former thing a thing
2025-04-16 19:39:01 +0200rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2025-04-16 19:39:32 +0200rvalue(~rvalue@user/rvalue) rvalue
2025-04-16 19:39:33 +0200 <tomsmeding> > Data.Char.generalCategory '🍌'
2025-04-16 19:39:35 +0200 <lambdabot> OtherSymbol
2025-04-16 19:44:39 +0200 <tomsmeding> https://tomsmeding.com/ss/get/tomsmeding/G81wZ6
2025-04-16 19:44:45 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 19:44:50 +0200 <tomsmeding> I tortured my terminal to show all the OtherSymbols so you don't have to
2025-04-16 19:46:02 +0200 <EvanR> that is stressing my monitor just displaying it
2025-04-16 19:46:34 +0200 <geekosaur> » valid character // sadly, not true for Private Use Area characters, at least according to GHC
2025-04-16 19:46:52 +0200 <geekosaur> cant' even use them in strings; you have to use an escape
2025-04-16 19:46:59 +0200 <EvanR> oof
2025-04-16 19:49:08 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 19:50:29 +0200 <monochrom> Compromise: ['🍎','🍌','🥒'] >:)
2025-04-16 19:51:16 +0200eron(~eron@143.0.15.20) (Quit: Client closed)
2025-04-16 19:52:49 +0200fp(~Thunderbi@cig3.wlan.kyla.fi) (Ping timeout: 248 seconds)
2025-04-16 19:53:17 +0200 <int-e> tomsmeding: (🍌) does have a banana and brackets (well I'm abusing terminology, but I won't apologise for that) ;-)
2025-04-16 19:53:29 +0200 <tomsmeding> no, it has parentheses ;)
2025-04-16 19:55:09 +0200 <EvanR> lunate brackets
2025-04-16 19:55:20 +0200 <EvanR> digressions
2025-04-16 19:55:25 +0200 <EvanR> argument pods
2025-04-16 19:55:34 +0200 <EvanR> eyelids
2025-04-16 19:55:51 +0200 <EvanR> runde Klammern
2025-04-16 19:57:01 +0200kilolympus(~kilolympu@vmi1102682.contaboserver.net) (Quit: Ping timeout (120 seconds))
2025-04-16 19:57:47 +0200jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net)
2025-04-16 19:59:05 +0200kilolympus(~kilolympu@vmi1102682.contaboserver.net) kilolympus
2025-04-16 19:59:45 +0200 <int-e> round clamps ;-)
2025-04-16 20:00:10 +0200 <geekosaur> crescent wrench
2025-04-16 20:02:35 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 20:03:09 +0200polyphem(~rod@p4fc2c4fb.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2025-04-16 20:07:27 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-16 20:07:48 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-16 20:12:53 +0200 <haskellbridge> <Bowuigi> Waning and waxing crescents
2025-04-16 20:13:32 +0200 <haskellbridge> <Bowuigi> Third and first quarters for banana brackets
2025-04-16 20:15:36 +0200 <int-e> > (1 + 3) * 5 -- waning one plus three waxing times 5 -- like this? (northern hemisphere; ymmv)
2025-04-16 20:15:37 +0200 <lambdabot> 20
2025-04-16 20:17:24 +0200sprotte24(~sprotte24@p200300d16f081b009801dcc9b07045e3.dip0.t-ipconnect.de)
2025-04-16 20:19:57 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 20:26:39 +0200tromp(~textual@2001:1c00:3487:1b00:c0e6:9a43:de22:8c0a)
2025-04-16 20:27:05 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 20:27:43 +0200Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu) (Quit: Client closed)
2025-04-16 20:28:00 +0200Googulator82(~Googulato@2a01-036d-0106-2077-315b-d519-517f-afe7.pool6.digikabel.hu)
2025-04-16 20:32:20 +0200jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) (Ping timeout: 260 seconds)
2025-04-16 20:34:48 +0200tremon(~tremon@83.80.159.219) tremon
2025-04-16 20:35:42 +0200jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) jespada
2025-04-16 20:37:55 +0200 <bwe> ski: relabeling tree directly & using State finished: https://github.com/benjaminweb/state-monad/blob/main/src/MyLib.hs#L64-L103
2025-04-16 20:38:13 +0200 <bwe> (what's the difference between Int and Integer? which should I use by default?)
2025-04-16 20:38:26 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 20:38:38 +0200 <bwe> why can't I make `relabel n t = fst $ go n t` point-free?
2025-04-16 20:38:57 +0200 <monochrom> Integer is unlimited, Int is limited. Do you aim for correctness by default or aim for performance by default?
2025-04-16 20:39:30 +0200 <mauke> because you don't know about (f .) . g
2025-04-16 20:39:32 +0200 <monochrom> I know C people who aim for performance by default and correctness as an afterthought. For them I would recomment Int. >:)
2025-04-16 20:39:56 +0200 <bwe> …and when (not) to use foldr (I remember vaguely I should default to foldr, is this right)?
2025-04-16 20:40:24 +0200 <monochrom> Me, I aim for fewer keystrokes by default, so I still default to Int >:)
2025-04-16 20:40:31 +0200tccq(~user@user/tccq) tccq
2025-04-16 20:40:45 +0200 <monochrom> (In Curry, there is only Int, and it's Haskell's Integer. That is a win-win.)
2025-04-16 20:41:35 +0200 <monochrom> IMO foldr should be neither default nor non-default.
2025-04-16 20:41:40 +0200 <EvanR> compatibility with many APIs by default (Int)
2025-04-16 20:41:43 +0200 <bwe> mauke: confirmed.
2025-04-16 20:42:26 +0200 <monochrom> The correct default is to write what makes most sense for your target audience.
2025-04-16 20:43:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 20:43:13 +0200 <bwe> monochrom: then again, on which data structures should I prefer foldl and on which foldr?
2025-04-16 20:43:43 +0200 <monochrom> That's yet another false dichotomy. I thought it would depend on the problem being solved.
2025-04-16 20:44:19 +0200 <EvanR> yeah you might want foldl or foldr on the same data structure
2025-04-16 20:44:46 +0200 <EvanR> they're not interchangeable
2025-04-16 20:44:54 +0200 <monochrom> Alternatively, ask an AI to make all decisions for you.
2025-04-16 20:45:12 +0200 <bwe> I don't. Thanks for clearing this up.
2025-04-16 20:46:28 +0200 <EvanR> > foldr f z [a,b,c,d]
2025-04-16 20:46:29 +0200 <lambdabot> f a (f b (f c (f d z)))
2025-04-16 20:46:33 +0200 <EvanR> >foldl f z [a,b,c,d]
2025-04-16 20:46:40 +0200 <EvanR> > foldl f z [a,b,c,d]
2025-04-16 20:46:42 +0200 <lambdabot> f (f (f (f z a) b) c) d
2025-04-16 20:48:09 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
2025-04-16 20:49:23 +0200euleritian(~euleritia@176.2.178.231) (Ping timeout: 268 seconds)
2025-04-16 20:49:52 +0200 <mauke> foldr on lists is good if you can stream the result (or just terminate early)
2025-04-16 20:50:03 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 20:50:31 +0200 <mauke> foldl' on lists is good if you can't stream the result and need to reach the end before returning anything
2025-04-16 20:50:41 +0200weary-traveler(~user@user/user363627) (Remote host closed the connection)
2025-04-16 20:54:10 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 20:56:05 +0200 <c_wraith> really, foldr is for when you want f to control when/whether the recursion happens
2025-04-16 20:58:15 +0200lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 265 seconds)
2025-04-16 20:58:25 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 20:58:50 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 20:59:12 +0200 <[exa]> bwe: you might want foldl' (with the tick!) for accumulator-like computations because it tends to be much more efficient in some specific cases (e.g., summing up a list of integers). foldr for pretty much all other cases because of the generality.
2025-04-16 21:00:03 +0200caconym(~caconym@user/caconym) (Quit: bye)
2025-04-16 21:00:04 +0200 <[exa]> bwe: btw one interesting look at foldr is as an "interpreter" for the list structure. Consider e.g. the "universal interpreter" for Maybe's:
2025-04-16 21:00:07 +0200 <[exa]> :t maybe
2025-04-16 21:00:08 +0200 <lambdabot> b -> (a -> b) -> Maybe a -> b
2025-04-16 21:00:34 +0200 <[exa]> (the parameters correspond to Nothing case, the Just case, then there's the actual data to take apart ("interpret"), and a result)
2025-04-16 21:00:46 +0200caconym(~caconym@user/caconym) caconym
2025-04-16 21:00:47 +0200 <[exa]> :t either -- similarly
2025-04-16 21:00:48 +0200 <lambdabot> (a -> c) -> (b -> c) -> Either a b -> c
2025-04-16 21:00:57 +0200 <[exa]> :t bool -the same again
2025-04-16 21:00:58 +0200 <lambdabot> error:
2025-04-16 21:00:58 +0200 <lambdabot> Variable not in scope:
2025-04-16 21:00:59 +0200 <lambdabot> the
2025-04-16 21:01:05 +0200 <[exa]> :t bool --the same again, whoops sorry for noise
2025-04-16 21:01:06 +0200 <lambdabot> a -> a -> Bool -> a
2025-04-16 21:02:21 +0200 <[exa]> and in foldr, we have the very same schema with constructors [] and (:)
2025-04-16 21:02:28 +0200 <bwe> [exa]: did you see the latest revision of my State Monad implementation? ski asked me to do relabel a Tree of Trees using State.
2025-04-16 21:02:38 +0200 <[exa]> :t flip foldr -- flipping so that it's more picturesque
2025-04-16 21:02:39 +0200 <lambdabot> Foldable t => b -> (a -> b -> b) -> t a -> b
2025-04-16 21:03:44 +0200 <[exa]> bwe: looks cool
2025-04-16 21:04:13 +0200 <[exa]> bwe: you might love either `do` or applicative notation for the last line
2025-04-16 21:04:57 +0200 <[exa]> also in common libraries the get/set combo is normally called `modify`, with that you can shorten what you have on lines 98&99 to a nice `modify (+1)`
2025-04-16 21:05:40 +0200 <[exa]> (spoilers here: https://hackage.haskell.org/package/mtl-2.3.1/docs/Control-Monad-State-Class.html#v:modify )
2025-04-16 21:06:01 +0200 <c_wraith> Honestly, foldr is pretty general. You should look to see if there's something more specific if you are at all uncertain.
2025-04-16 21:06:17 +0200 <c_wraith> like mapAccumL and mapAccumR exist
2025-04-16 21:07:04 +0200 <c_wraith> (I say, then I'll use foldr instead of either of those)
2025-04-16 21:07:06 +0200 <[exa]> bwe: re applicative notation, try this: `(+) <$> Just 3 <*> Just 5`
2025-04-16 21:07:35 +0200 <haskellbridge> <hellwolf> btw, why tom from bluefin saying for_ is all you need?
2025-04-16 21:07:37 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2025-04-16 21:08:31 +0200 <[exa]> hellwolf: depends on what you need it for I guess?
2025-04-16 21:08:41 +0200 <c_wraith> for_ is traverse_, and the joke is usually "traverse does that"
2025-04-16 21:09:12 +0200 <[exa]> c_wraith: I managed to suppress my note about traverse is all we need :D
2025-04-16 21:09:19 +0200 <monochrom> Ask tom? But IIRC, tom hid the real diversity in the applicative or monad you use.
2025-04-16 21:09:20 +0200 <ski> monochrom : in my case, i specified `Integer'
2025-04-16 21:09:23 +0200 <c_wraith> but a lot of things can also be done with traverse_
2025-04-16 21:09:39 +0200 <EvanR> :t for
2025-04-16 21:09:40 +0200 <lambdabot> (Traversable t, Applicative f) => t a -> (a -> f b) -> f (t b)
2025-04-16 21:09:46 +0200 <bwe> [exa]: thanks :) - btw what's your setup doing haskell / irc from mobile phone?
2025-04-16 21:09:56 +0200 <monochrom> or functor
2025-04-16 21:10:20 +0200 <[exa]> bwe: weechat-android and the haskell is present implicitly :D
2025-04-16 21:10:39 +0200 <[exa]> (wish there was ghc-android)
2025-04-16 21:10:49 +0200 <ski> bwe : your code for relabelling is basically okay, modulo some minor issues
2025-04-16 21:10:57 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 21:11:38 +0200 <ski> bwe : the first comment example call to relabel is incorrect
2025-04-16 21:12:20 +0200 <tomsmeding> [exa]: termux has a ghc
2025-04-16 21:12:29 +0200 <ski> bwe : and, i specified `relabel' should start counting at zero, not that you should pass the starting point as a parameter. and the variant (using `State') should still have the same type, not a different type
2025-04-16 21:13:47 +0200 <ski> bwe : finally, you can use `(<*>)' (and `(<$>)'), rather than `(>>=)', in the version using `State'. if you define `tick :: State Integer Integer', you can avoid the `go', too
2025-04-16 21:14:06 +0200 <ski> er, the `do'
2025-04-16 21:14:50 +0200 <bwe> ski: will incorporate that tomorrow.
2025-04-16 21:15:10 +0200 <EvanR> haskell on mobile sounds useful
2025-04-16 21:15:22 +0200 <EvanR> I can demonstrate the wonders of functional programming at the bar
2025-04-16 21:15:24 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-16 21:15:33 +0200 <[exa]> EvanR: some phones are Foldable
2025-04-16 21:15:35 +0200[exa]ducks
2025-04-16 21:15:49 +0200 <EvanR> drink and derive Functor
2025-04-16 21:15:52 +0200 <tomsmeding> they are typically not Traversable
2025-04-16 21:16:20 +0200 <[exa]> tomsmeding: I had termux a loooooooong time ago, then kinda forgot about that. will retry, thanks!
2025-04-16 21:17:29 +0200 <ski> bwe : anyway, i hope that was a somewhat more illustrative example of doing state-threading, either explicitly, or by using monadic or idiaomatic combinators
2025-04-16 21:17:49 +0200 <EvanR> idea-o-matic
2025-04-16 21:19:07 +0200 <tomsmeding> or just with a French idiom
2025-04-16 21:20:48 +0200ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 21:23:18 +0200 <monochrom> hahaha [exa]
2025-04-16 21:24:50 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2025-04-16 21:24:50 +0200ljdarj1ljdarj
2025-04-16 21:26:59 +0200 <[exa]> "can I also have your Num" product jokes incoming in 3 2 1
2025-04-16 21:27:08 +0200ljdarj(~Thunderbi@user/ljdarj) (Quit: ljdarj)
2025-04-16 21:27:24 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 21:28:19 +0200 <tomsmeding> the problem is that you generally cannot call numbers in haskell
2025-04-16 21:28:53 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-16 21:29:05 +0200j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-16 21:29:20 +0200 <tomsmeding> in smalltalk you'd at least be able to send messages to them
2025-04-16 21:29:27 +0200emmanuelux(~emmanuelu@user/emmanuelux) emmanuelux
2025-04-16 21:31:01 +0200 <bwe> ski: it was :) thanks for bringing that in. - what would be the next step concept wise to learn?
2025-04-16 21:31:52 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 21:32:45 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 21:33:00 +0200 <EvanR> tomsmeding, good call
2025-04-16 21:33:18 +0200 <tomsmeding> :)
2025-04-16 21:37:00 +0200pavonia(~user@user/siracusa) siracusa
2025-04-16 21:39:49 +0200arahael(~arahael@user/arahael) (Ping timeout: 265 seconds)
2025-04-16 21:40:27 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2025-04-16 21:40:46 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 21:41:40 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2025-04-16 21:41:57 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 21:41:59 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2025-04-16 21:42:17 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-16 21:42:59 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 21:44:49 +0200j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-16 21:47:29 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 21:50:25 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-16 21:55:41 +0200foul_owl(~kerry@174-21-146-90.tukw.qwest.net) (Ping timeout: 252 seconds)
2025-04-16 22:01:05 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 22:01:17 +0200jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net) (Quit: Client closed)
2025-04-16 22:05:05 +0200acidjnk(~acidjnk@p200300d6e71c4f4138f4856942b014fc.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2025-04-16 22:05:28 +0200jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
2025-04-16 22:06:21 +0200jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) jespada
2025-04-16 22:07:47 +0200acidjnk(~acidjnk@p200300d6e71c4f41a8499be0fe4c63d3.dip0.t-ipconnect.de) acidjnk
2025-04-16 22:08:04 +0200foul_owl(~kerry@94.156.149.93) foul_owl
2025-04-16 22:08:45 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-16 22:11:53 +0200sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2025-04-16 22:14:08 +0200notdabs(~Owner@2600:1700:69cf:9000:e035:2729:333c:ea) (Quit: Leaving)
2025-04-16 22:19:45 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 22:24:18 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 22:31:03 +0200inca(~inca@h213.233.30.71.dynamic.ip.windstream.net) (Ping timeout: 265 seconds)
2025-04-16 22:33:21 +0200inca(~inca@h213.233.30.71.dynamic.ip.windstream.net)
2025-04-16 22:36:19 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 22:38:20 +0200inca(~inca@h213.233.30.71.dynamic.ip.windstream.net) (Ping timeout: 260 seconds)
2025-04-16 22:38:39 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:322:62f9:6518:a6a8) (Remote host closed the connection)
2025-04-16 22:40:58 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-16 22:41:57 +0200Angelz(Angelz@2605:6400:30:fc15:d55b:fa6c:bd14:9973) (Changing host)
2025-04-16 22:41:57 +0200Angelz(Angelz@user/angelz) angelz
2025-04-16 22:42:03 +0200AngelzANgelz
2025-04-16 22:42:07 +0200ANgelzAngelz
2025-04-16 22:42:31 +0200inca(~inca@71.30.233.213)
2025-04-16 22:43:43 +0200Angelzgadot
2025-04-16 22:46:31 +0200 <haskellbridge> <Liamzee> is there a specialize everything option?
2025-04-16 22:47:05 +0200 <haskellbridge> <Liamzee> EvanR: play.haskell.org
2025-04-16 22:47:40 +0200inca(~inca@71.30.233.213) (Ping timeout: 276 seconds)
2025-04-16 22:47:53 +0200 <haskellbridge> <Liamzee> hellwolf: actually, foldr is all you need, not sure if probie will explain why, though
2025-04-16 22:48:37 +0200inca(~inca@71.30.233.213)
2025-04-16 22:48:58 +0200 <EvanR> foldr is the induction principle for List
2025-04-16 22:49:19 +0200 <geekosaur> -fspecialise-aggressively, I think?
2025-04-16 22:52:15 +0200 <haskellbridge> <Liamzee> thanks
2025-04-16 22:52:24 +0200 <haskellbridge> <Liamzee> induction principle for []?
2025-04-16 22:52:39 +0200 <EvanR> if z :: B and f :: (A -> B -> B) then there's a function g :: [A] -> B such that g [] = z and g (x:xs) = f x (g xs)
2025-04-16 22:52:40 +0200 <haskellbridge> <Liamzee> foldr is the actual best analogue to for loop, not for_
2025-04-16 22:53:19 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 22:54:07 +0200 <EvanR> and foldr f z computes g using recursion
2025-04-16 22:55:12 +0200 <haskellbridge> <Liamzee> thanks for restating the builder rewrite rule
2025-04-16 22:55:20 +0200 <haskellbridge> <Liamzee> in a way easier for me to understand
2025-04-16 22:58:10 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-16 22:59:16 +0200takuan(~takuan@d8D86B601.access.telenet.be)
2025-04-16 22:59:17 +0200 <EvanR> it lets you define a large class of functions on [A]
2025-04-16 22:59:23 +0200jespada(~jespada@r190-133-10-247.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
2025-04-16 22:59:30 +0200 <EvanR> though I'm not sure how large
2025-04-16 22:59:43 +0200 <haskellbridge> <Liamzee> implicitly, there are functions on [a] that cannot be defined by foldr
2025-04-16 22:59:55 +0200 <EvanR> that is a bold claim
2025-04-16 23:00:10 +0200inca(~inca@71.30.233.213) (Ping timeout: 252 seconds)
2025-04-16 23:00:29 +0200 <haskellbridge> <Liamzee> i guess large doesn't imply a subset of all functions on [a]
2025-04-16 23:00:58 +0200 <c_wraith> It's not a bold claim.
2025-04-16 23:01:04 +0200 <EvanR> what's an example
2025-04-16 23:01:16 +0200 <c_wraith> It's got equivalent computational power to primitive recursion (paramorphism)
2025-04-16 23:01:21 +0200 <haskellbridge> <Liamzee> i thought that was what you said by saying "a large class of functions on [a]"
2025-04-16 23:01:24 +0200 <c_wraith> so it can't be used for Ackernman's function, for example
2025-04-16 23:01:40 +0200 <EvanR> ackermann is on numbers
2025-04-16 23:01:49 +0200 <c_wraith> definte ackerman on the length of lists
2025-04-16 23:02:31 +0200 <EvanR> so ackermann is recursive but not primitive recursive
2025-04-16 23:02:34 +0200 <c_wraith> yes
2025-04-16 23:02:59 +0200 <c_wraith> that's the main reason anyone knows about it. It was the first example used to demonstrate primitive recursion is less powerful than general recursion
2025-04-16 23:03:52 +0200inca(~inca@71.30.233.213)
2025-04-16 23:06:34 +0200 <EvanR> so after this tiny quest we come back to the shire and conclude, no, foldr is not all you need xD
2025-04-16 23:07:28 +0200michalz(~michalz@185.246.207.197) (Remote host closed the connection)
2025-04-16 23:07:56 +0200 <c_wraith> but it is very uncommon to need more :)
2025-04-16 23:09:00 +0200 <EvanR> fine. *puts ackermann on a boat to Valinor*
2025-04-16 23:09:22 +0200 <c_wraith> the true danger of being a foundational computer scientist
2025-04-16 23:11:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 23:11:20 +0200 <haskellbridge> <Liamzee> afaik tomjaguarpaw / Tom Ellis's point
2025-04-16 23:11:38 +0200 <haskellbridge> <Liamzee> was that you could reconstruct imperative programming just by combining Bluefin with For
2025-04-16 23:12:21 +0200 <haskellbridge> <Liamzee> since you'd get the short-circuiting behavior and potentially unrestricted effects via for_ + bluefin
2025-04-16 23:12:40 +0200 <haskellbridge> <Liamzee> my counterpoint is that you can just ditch bluefin for loops by going straight to foldr
2025-04-16 23:14:15 +0200 <EvanR> who
2025-04-16 23:15:29 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-16 23:15:32 +0200inca(~inca@71.30.233.213) (Ping timeout: 268 seconds)
2025-04-16 23:15:37 +0200 <haskellbridge> <Liamzee> "tom from bluefin"
2025-04-16 23:16:36 +0200 <haskellbridge> <Liamzee> Groq engineer, Vice Chair, Vice Treasurer of Haskell Foundation
2025-04-16 23:17:32 +0200inca(~inca@71.30.233.213)
2025-04-16 23:17:48 +0200 <tomsmeding> also a nice guy
2025-04-16 23:20:12 +0200 <haskellbridge> <Liamzee> that's the most important trait! :3
2025-04-16 23:20:21 +0200Inst(~Inst@user/Inst) Inst
2025-04-16 23:23:46 +0200prdak(~Thunderbi@user/prdak) prdak
2025-04-16 23:26:46 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 23:28:21 +0200inca(~inca@71.30.233.213) (Ping timeout: 248 seconds)
2025-04-16 23:29:15 +0200inca(~inca@71.30.233.213)
2025-04-16 23:30:41 +0200Inst(~Inst@user/Inst) (Remote host closed the connection)
2025-04-16 23:31:24 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-16 23:31:59 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2025-04-16 23:34:55 +0200j1n37-(~j1n37@user/j1n37) j1n37
2025-04-16 23:35:20 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 265 seconds)
2025-04-16 23:38:40 +0200weary-traveler(~user@user/user363627) user363627
2025-04-16 23:40:19 +0200inca(~inca@71.30.233.213) (Ping timeout: 276 seconds)
2025-04-16 23:42:11 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-16 23:48:28 +0200inca(~inca@71.30.233.213)
2025-04-16 23:49:21 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-16 23:49:21 +0200notdabs(~Owner@2600:1700:69cf:9000:e035:2729:333c:ea)