2026/03/11

2026-03-11 00:03:30 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-03-11 00:14:23 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 00:14:23 +0100Sgeo(~Sgeo@user/sgeo) Sgeo
2026-03-11 00:19:07 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-03-11 00:30:10 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 00:35:08 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-03-11 00:37:58 +0100Tuplanolla(~Tuplanoll@88-114-89-88.elisa-laajakaista.fi) Tuplanolla
2026-03-11 00:45:57 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 00:49:05 +0100mmaruseacph2(~mihai@mihai.page) (Ping timeout: 265 seconds)
2026-03-11 00:49:30 +0100prdak(~Thunderbi@user/prdak) prdak
2026-03-11 00:49:36 +0100mmaruseacph2(~mihai@mihai.page) mmaruseacph2
2026-03-11 00:51:00 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-03-11 00:51:46 +0100emmanuelux(~em@user/emmanuelux) emmanuelux
2026-03-11 00:53:01 +0100bionade24(~quassel@server2.oscloud.info) (Quit: Apocalypse Incoming!)
2026-03-11 00:53:13 +0100bionade24(~quassel@server2.oscloud.info) bionade24
2026-03-11 00:54:09 +0100prdak(~Thunderbi@user/prdak) (Ping timeout: 255 seconds)
2026-03-11 01:17:18 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 01:19:59 +0100Square(~Square4@user/square) Square
2026-03-11 01:20:18 +0100Square2(~Square4@user/square) (Ping timeout: 246 seconds)
2026-03-11 01:22:08 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-03-11 01:22:23 +0100acidjnk_new(~acidjnk@p200300d6e700e547f0589d3e513577e0.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2026-03-11 01:32:43 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 01:37:48 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-03-11 01:48:29 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 01:55:14 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-03-11 01:59:49 +0100Googulator(~Googulato@2a01-036d-0106-0119-01e8-0aed-2fac-7c8a.pool6.digikabel.hu) (Quit: Client closed)
2026-03-11 02:00:04 +0100Googulator(~Googulato@2a01-036d-0106-0119-01e8-0aed-2fac-7c8a.pool6.digikabel.hu)
2026-03-11 02:02:19 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
2026-03-11 02:06:04 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 02:10:43 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-03-11 02:15:24 +0100czan(~czan@user/mange) czan
2026-03-11 02:21:51 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 02:26:25 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-03-11 02:28:21 +0100AlexNoo_(~AlexNoo@5.139.232.240)
2026-03-11 02:29:50 +0100Alex_delenda_est(~al_test@178.34.160.184) (Ping timeout: 244 seconds)
2026-03-11 02:31:00 +0100AlexZenon(~alzenon@178.34.160.184) (Ping timeout: 264 seconds)
2026-03-11 02:32:12 +0100AlexNoo(~AlexNoo@178.34.160.184) (Ping timeout: 264 seconds)
2026-03-11 02:32:22 +0100califax(~califax@user/califx) (Remote host closed the connection)
2026-03-11 02:33:06 +0100Tuplanolla(~Tuplanoll@88-114-89-88.elisa-laajakaista.fi) (Ping timeout: 248 seconds)
2026-03-11 02:33:23 +0100califax(~califax@user/califx) califx
2026-03-11 02:34:26 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-03-11 02:34:49 +0100AlexZenon(~alzenon@5.139.232.240)
2026-03-11 02:37:38 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 02:41:03 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2026-03-11 02:44:24 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-03-11 02:47:03 +0100img(~img@user/img) (Quit: ZNC 1.10.1 - https://znc.in)
2026-03-11 02:48:18 +0100img(~img@user/img) img
2026-03-11 02:55:40 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 03:00:54 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-03-11 03:02:49 +0100confusedalex_(~confuseda@user/confusedalex) confusedalex
2026-03-11 03:03:14 +0100confusedalex(~confuseda@user/confusedalex) (Ping timeout: 245 seconds)
2026-03-11 03:03:14 +0100confusedalex_confusedalex
2026-03-11 03:03:28 +0100czan`(~czan@user/mange) czan
2026-03-11 03:03:59 +0100czan(~czan@user/mange) (Killed (NickServ (GHOST command used by czan`)))
2026-03-11 03:04:05 +0100czan`czan
2026-03-11 03:04:59 +0100rekahsoft(~rekahsoft@76.67.111.168) (Read error: Connection reset by peer)
2026-03-11 03:07:06 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
2026-03-11 03:11:28 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 03:15:49 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-03-11 03:22:26 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2026-03-11 03:27:01 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 03:31:33 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-03-11 03:42:23 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 03:44:01 +0100pabs3Guest1123
2026-03-11 03:44:01 +0100Guest1123(~pabs3@user/pabs3) (Killed (uranium.libera.chat (Nickname regained by services)))
2026-03-11 03:44:18 +0100pabs3(~pabs3@user/pabs3) pabs3
2026-03-11 03:44:24 +0100Googulator(~Googulato@2a01-036d-0106-0119-01e8-0aed-2fac-7c8a.pool6.digikabel.hu) (Quit: Client closed)
2026-03-11 03:46:59 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-03-11 03:55:30 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 255 seconds)
2026-03-11 03:58:09 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 03:59:42 +0100stackdroid18(~stackdroi@user/stackdroid) ()
2026-03-11 04:02:24 +0100terrorjack(~terrorjac@2a01:4f8:271:2d98::2) (Quit: The Lounge - https://thelounge.chat)
2026-03-11 04:02:50 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-03-11 04:07:57 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2026-03-11 04:08:19 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2026-03-11 04:10:08 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 04:11:18 +0100gabiruh(~gabiruh@vps19177.publiccloud.com.br) (Quit: ZNC 1.7.5 - https://znc.in)
2026-03-11 04:11:35 +0100gabiruh(~gabiruh@vps19177.publiccloud.com.br) gabiruh
2026-03-11 04:12:42 +0100rekahsoft(~rekahsoft@76.67.111.168) rekahsoft
2026-03-11 04:14:59 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-03-11 04:22:28 +0100rekahsoft(~rekahsoft@76.67.111.168) (Read error: Connection reset by peer)
2026-03-11 04:25:33 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 04:32:17 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-03-11 04:37:33 +0100rekahsoft(~rekahsoft@bras-base-orllon1103w-grc-20-76-67-111-168.dsl.bell.ca) rekahsoft
2026-03-11 04:37:44 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-03-11 04:41:12 +0100jmcantrell_(~weechat@user/jmcantrell) jmcantrell
2026-03-11 04:43:36 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 04:46:45 +0100Square(~Square4@user/square) (Ping timeout: 244 seconds)
2026-03-11 04:47:00 +0100tusko(~uwu@user/tusko) (Remote host closed the connection)
2026-03-11 04:48:11 +0100machinedgod(~machinedg@d172-219-48-230.abhsia.telus.net) (Ping timeout: 268 seconds)
2026-03-11 04:48:36 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-03-11 04:52:17 +0100tusko(~uwu@user/tusko) tusko
2026-03-11 04:54:42 +0100rekahsoft(~rekahsoft@bras-base-orllon1103w-grc-20-76-67-111-168.dsl.bell.ca) (Remote host closed the connection)
2026-03-11 04:55:00 +0100haritz(~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
2026-03-11 04:59:22 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 05:00:15 +0100jmcantrell_(~weechat@user/jmcantrell) (Ping timeout: 272 seconds)
2026-03-11 05:03:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-03-11 05:06:10 +0100pandeyan(~pandeyan@192-184-248-122.fiber.dynamic.sonic.net) (Ping timeout: 248 seconds)
2026-03-11 05:06:34 +0100terrorjack(~terrorjac@2a01:4f8:271:2d98::2) terrorjack
2026-03-11 05:12:46 +0100terrorjack(~terrorjac@2a01:4f8:271:2d98::2) (Quit: The Lounge - https://thelounge.chat)
2026-03-11 05:14:48 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 05:14:49 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 272 seconds)
2026-03-11 05:16:04 +0100terrorjack(~terrorjac@2a01:4f8:271:2d98::2) terrorjack
2026-03-11 05:19:44 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-03-11 05:30:35 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 05:35:27 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-03-11 05:36:19 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 264 seconds)
2026-03-11 05:51:27 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-03-11 05:58:03 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 244 seconds)
2026-03-11 06:00:50 +0100takuan(~takuan@d8D86B9E9.access.telenet.be)
2026-03-11 06:00:57 +0100arandombit(~arandombi@2a02:2455:8656:7100:49ae:b06e:43ec:7652)
2026-03-11 06:00:57 +0100arandombit(~arandombi@2a02:2455:8656:7100:49ae:b06e:43ec:7652) (Changing host)
2026-03-11 06:00:57 +0100arandombit(~arandombi@user/arandombit) arandombit
2026-03-11 06:02:10 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 06:05:28 +0100Gravifer(~Gravifer@user/Gravifer) Gravifer
2026-03-11 06:06:19 +0100arandombit(~arandombi@user/arandombit) (Ping timeout: 244 seconds)
2026-03-11 06:09:21 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2026-03-11 06:11:10 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 06:16:28 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2026-03-11 06:26:41 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 06:31:31 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-03-11 06:33:10 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-03-11 06:36:05 +0100anpad(~pandeyan@user/anpad) anpad
2026-03-11 06:37:34 +0100michalz(~michalz@185.246.207.221)
2026-03-11 06:39:28 +0100Gravifer(~Gravifer@user/Gravifer) (Ping timeout: 240 seconds)
2026-03-11 06:42:09 +0100divlamir(~divlamir@user/divlamir) (Read error: Connection reset by peer)
2026-03-11 06:42:25 +0100divlamir(~divlamir@user/divlamir) divlamir
2026-03-11 06:44:36 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 06:47:38 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-03-11 06:49:06 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-03-11 06:51:46 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 248 seconds)
2026-03-11 06:59:54 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 07:05:12 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-03-11 07:06:51 +0100arandombit(~arandombi@2a02:2455:8656:7100:cd70:20e7:538d:131c)
2026-03-11 07:06:51 +0100arandombit(~arandombi@2a02:2455:8656:7100:cd70:20e7:538d:131c) (Changing host)
2026-03-11 07:06:51 +0100arandombit(~arandombi@user/arandombit) arandombit
2026-03-11 07:12:08 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 07:16:00 +0100jreicher(~joelr@user/jreicher) (Quit: brb)
2026-03-11 07:16:25 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-03-11 07:26:24 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 246 seconds)
2026-03-11 07:26:43 +0100jreicher(~joelr@user/jreicher) jreicher
2026-03-11 07:27:30 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 07:32:50 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2026-03-11 07:42:47 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-03-11 07:43:16 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 07:47:15 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 255 seconds)
2026-03-11 07:48:12 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-03-11 07:53:45 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-03-11 07:59:04 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 08:03:46 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-03-11 08:10:21 +0100 <gentauro> Can `BangPatterns` be used in do-notation? Like: `do foo! <- readFile "bar.txt"`.
2026-03-11 08:10:44 +0100 <gentauro> ups
2026-03-11 08:10:57 +0100 <gentauro> should be `do !foo <- readFile "bar.txt"`
2026-03-11 08:10:59 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2026-03-11 08:13:08 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 08:15:17 +0100gentauroI mean it compiles. I just want to be use that the `bang` forces the `readFile` to go from lazy to strict
2026-03-11 08:15:49 +0100 <[exa]> gentauro: I'd suspect it only forces the first cons of the list
2026-03-11 08:16:16 +0100 <[exa]> there's some strict variant of readFile for this use
2026-03-11 08:16:24 +0100 <[exa]> (or use deepseq)
2026-03-11 08:18:38 +0100 <mesaoptimizer> What is the current set of recommended beginner's books to learn Haskell (that enables understanding of the following concepts: Functor, Applicatives, Monads, record syntax)? I find my lack of fluency with the following things to be getting in the way of growing the small set of personal applications I use that are written in Haskell
2026-03-11 08:19:28 +0100 <opqdonut> mesaoptimizer: I'm not sure what the community at large is recommending, but students have been giving good feedbakc on my open online course haskell.mooc.fi
2026-03-11 08:20:06 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-03-11 08:21:37 +0100 <mesaoptimizer> that's quite an interesting syllabus sequence, I might attempt that MOOC, and if I do, I'll give you feedback too :)
2026-03-11 08:21:38 +0100 <ski> iirc "Haskell: The Craft of Functional Programming" should cover that, apart from `Applicative'
2026-03-11 08:21:48 +0100 <ski> (by Simon Thompson)
2026-03-11 08:22:07 +0100 <ski> then there's stuff like
2026-03-11 08:22:12 +0100 <ski> @where Typeclassopedia
2026-03-11 08:22:13 +0100 <lambdabot> http://www.haskell.org/haskellwiki/Typeclassopedia
2026-03-11 08:22:50 +0100 <gentauro> [exa]: thx
2026-03-11 08:24:32 +0100 <[exa]> mesaoptimizer: the community LYAH is not bad if you know some coding already https://learnyouahaskell.github.io/
2026-03-11 08:24:50 +0100 <[exa]> gentauro: btw what's the usecase there? literally just forcing the file in?
2026-03-11 08:24:51 +0100 <mesaoptimizer> I read the first part of Graham Hutton's book two years ago btw
2026-03-11 08:25:36 +0100 <mesaoptimizer> I returned to it recently and didn't like it, and especially didn't appreciate the lack of a mention of record syntax anywhere, but perhaps that was after the publication of the 2016 book
2026-03-11 08:26:14 +0100 <mesaoptimizer> then again, Chris Allen and Julie Moronuki's https://haskellbook.com mentions record syntax (I did a search in the PDF) and it was published in 2017
2026-03-11 08:26:17 +0100 <gentauro> [exa]: last time I did this -> `LBS.readFile f >>= \bs -> LBS.length bs `seq` pure bs` :|
2026-03-11 08:26:37 +0100 <gentauro> I guess by forcing the length of the file and then returning the bytes
2026-03-11 08:26:39 +0100 <gentauro> :-\
2026-03-11 08:26:45 +0100humasect(~humasect@184.151.37.182) humasect
2026-03-11 08:27:23 +0100 <[exa]> gentauro: you might want to use the strict reader https://hackage-content.haskell.org/package/bytestring-0.12.2.0/docs/Data-ByteString.html#v:readFile and then thaw the string
2026-03-11 08:28:01 +0100 <[exa]> as in, `fromStrict <$> StrictBS.readFile`
2026-03-11 08:28:06 +0100 <gentauro> [exa]: use case is (files are small enough to be in mem) so yes, they need to be fully in mem
2026-03-11 08:28:19 +0100 <ski> preflex: xseen bitemyapp
2026-03-11 08:28:19 +0100 <preflex> Sorry, I haven't seen bitemyapp
2026-03-11 08:28:27 +0100 <mesaoptimizer> my current favorite resource has been https://leanpub.com/finding-success-in-haskell by Julie Moronuki and Chris Martin. It helped me ease into the use of Either and Maybe and `newtype` and introduced me to `Data.Coerce`
2026-03-11 08:28:32 +0100chele(~chele@user/chele) chele
2026-03-11 08:28:58 +0100 <dminuoso> If you're starting out Data.Coerce is most likely something you not should be wielding
2026-03-11 08:29:24 +0100 <mesaoptimizer> I did a PLT semantics course, its all right
2026-03-11 08:29:31 +0100 <gentauro> [exa]: yeah, my code import is -> `import qualified Data.ByteString.Lazy as LBS`. Kind of dump to import the `lazy` version if I want to do strict stuff
2026-03-11 08:30:02 +0100 <[exa]> well add the SBS and there you go
2026-03-11 08:30:02 +0100 <dminuoso> mesaoptimizer: I'm not sure how that module could help you on your path *shrugs*
2026-03-11 08:30:19 +0100 <gentauro> [exa]: got it
2026-03-11 08:30:25 +0100 <[exa]> :)
2026-03-11 08:31:11 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 08:31:23 +0100 <mesaoptimizer> dminuoso: hmm, perhaps you have a better idea than I do of how footgunny `Data.Coerce` is. I do know that I can't use it if I enable `Safe` language pragma
2026-03-11 08:31:27 +0100 <dminuoso> mesaoptimizer: It's not really about "understanding" coercions, just that they dont fit into *any* idiomatic code for when you bootstrap yourself into the language.
2026-03-11 08:31:56 +0100 <dminuoso> Oh it's not dangerous, but I'd be willing to say that almost any use of `coerce` in your first year is probably a smell
2026-03-11 08:32:15 +0100 <dminuoso> Explicit unpacking/repacking is just better most of the time.
2026-03-11 08:33:06 +0100 <mesaoptimizer> I see. I was using type applications with it
2026-03-11 08:33:31 +0100 <mesaoptimizer> `coerce` without enabling the `TypeApplication` extension seems almost unusable at least in my experience
2026-03-11 08:34:10 +0100 <dminuoso> Beginner trying to grasp Functor and Maybe already dabbling with TypeApplication :-)
2026-03-11 08:34:17 +0100 <dminuoso> This is how you know you're in #haskell
2026-03-11 08:34:38 +0100 <humasect> eh well. learn on the battlefield
2026-03-11 08:35:03 +0100 <[exa]> +1 for coercefield experience
2026-03-11 08:35:21 +0100 <[exa]> nothing explains that you don't want to use X better than using X
2026-03-11 08:35:51 +0100 <dminuoso> mesaoptimizer: But you're on a right track as far as coerce goes. If you're using it with TypeApplications it's as good as manual unpacking/repacking - albeit more unusual
2026-03-11 08:35:56 +0100 <mesaoptimizer> Functors are easy to wrap one's head around via just the type signature. Applicatives and Monad type signatures seem a bit harder to understand just by looking at it though
2026-03-11 08:35:57 +0100 <dminuoso> Forget what I said, then.
2026-03-11 08:36:03 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-03-11 08:36:12 +0100 <mesaoptimizer> dminuoso: I see, that's useful to know
2026-03-11 08:38:13 +0100arandombit(~arandombi@user/arandombit) (Ping timeout: 244 seconds)
2026-03-11 08:38:57 +0100 <dminuoso> mesaoptimizer: Some of the reasons that Applicative/Monad are difficult to understand are an obscure name and the fact that the pattern they abstract over something that has no "purpose" or "intent", just an observation that there's some things that just follow the same form and laws... I personally think that too much time is lost trying to focus around what they mean because it's almost entirely
2026-03-11 08:38:59 +0100 <dminuoso> irrelevant for learning haskell.
2026-03-11 08:39:25 +0100 <dminuoso> I'd be willing to bet you can learn Haskell just fine without understanding what Applicative or Monad "are"
2026-03-11 08:40:09 +0100 <humasect> yea; it clicks when it clicks
2026-03-11 08:40:26 +0100ski. o O ( "How to Replace Failure by a List of Successes: A method for exception handling, backtracking, and pattern matching in lazy functional languages" by Philip Wadler in 1985 at <http://www.rkrishnan.org/files/wadler-1985.pdf> )
2026-03-11 08:42:01 +0100 <dminuoso> mesaoptimizer: I mean most individual instances of Applicative/Monad are trivial enough to figure out in a minute or two as long as you have more than a week of programming experience - and that knowledge is likely enough to become competent in Haskell..
2026-03-11 08:42:46 +0100 <dminuoso> The biggest pedagogic mistake of Haskell.
2026-03-11 08:43:53 +0100 <humasect> depends where one starts after all
2026-03-11 08:44:07 +0100 <mesaoptimizer> I see. Sure, perhaps I figure it out via learning to be comfortable with actual instances of these type classes. I'll try that. I didn't have the misconception that it was directly related to the category theoretic concepts, of course
2026-03-11 08:44:19 +0100 <mesaoptimizer> nor that the laws necessarily hold if you define an instance of the classes
2026-03-11 08:44:44 +0100 <Axman6> There's a lot of external pressure to explain monads, because they're the big boogie man of Haskell people struggle to understand - but they'd be much better off starting to use things which are monads first, and then see that there's a common interface for them
2026-03-11 08:44:57 +0100 <opqdonut> yes, agreed
2026-03-11 08:46:48 +0100 <Axman6> It's basically how we taught things in the NICTA/Data61/System F FP course - here's a type, here's a function which uses that typew, implement the function that matches that type (hint there is 1/2/infinite ways to do that). Here's another type, here's a function's type: implement the function with that type... Hey, their types look really similar, can we do something with that?
2026-03-11 08:46:59 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 08:49:24 +0100Digit(~user@user/digit) (Ping timeout: 256 seconds)
2026-03-11 08:49:34 +0100Digitteknohippie(~user@user/digit) Digit
2026-03-11 08:49:37 +0100oskarw(~user@user/oskarw) oskarw
2026-03-11 08:51:50 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-03-11 08:53:38 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2026-03-11 08:53:56 +0100poscat0x04(~poscat@user/poscat) poscat
2026-03-11 08:54:43 +0100 <ski> mesaoptimizer : do note that most "monad tutorials" out there are bad (unhelpful, hinders comprehension)
2026-03-11 08:55:19 +0100poscat(~poscat@user/poscat) (Ping timeout: 245 seconds)
2026-03-11 08:55:20 +0100 <[exa]> +1000 ^
2026-03-11 08:55:41 +0100 <[exa]> who said that thing with "abstract complex are elucidated by throwing examples at them"
2026-03-11 08:59:39 +0100humasect(~humasect@184.151.37.182) (Quit: Leaving...)
2026-03-11 09:02:45 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 09:03:55 +0100sord937(~sord937@gateway/tor-sasl/sord937) sord937
2026-03-11 09:07:24 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-03-11 09:09:13 +0100 <probie> A monad is like a burrito, if you're a weirdo who uses smaller burritos as a filling for bigger burritos
2026-03-11 09:13:45 +0100humasect(~humasect@184.151.37.182) humasect
2026-03-11 09:14:08 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-11 09:16:42 +0100 <[exa]> burrito filling that spawns more burritos....y u m m y
2026-03-11 09:16:47 +0100 <Rembane> Gotta have all the burritos
2026-03-11 09:16:51 +0100 <Rembane> Infinite breakfast
2026-03-11 09:18:16 +0100 <[exa]> I find this useful analogy under-used at meetups
2026-03-11 09:18:27 +0100 <[exa]> people still do pizza and similar hard-to-wrap nonsense
2026-03-11 09:19:14 +0100 <[exa]> impure
2026-03-11 09:19:23 +0100 <Rembane> Hard agree
2026-03-11 09:19:36 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-03-11 09:21:06 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 244 seconds)
2026-03-11 09:21:39 +0100DigitteknohippieDigit
2026-03-11 09:24:04 +0100 <oskarw> probie: You forgot that you burritos are wraped on space and are send back to you on Earth
2026-03-11 09:24:16 +0100 <oskarw> *that your
2026-03-11 09:26:24 +0100tusko(~uwu@user/tusko) (Remote host closed the connection)
2026-03-11 09:26:39 +0100tusko(~uwu@user/tusko) tusko
2026-03-11 09:33:03 +0100humasect(~humasect@184.151.37.182) (Quit: Leaving...)
2026-03-11 09:34:39 +0100prdak(~Thunderbi@user/prdak) prdak
2026-03-11 09:38:58 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2026-03-11 09:39:11 +0100prdak(~Thunderbi@user/prdak) (Ping timeout: 244 seconds)
2026-03-11 09:39:22 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-03-11 09:44:04 +0100GdeVolpiano(~GdeVolpia@user/GdeVolpiano) (Quit: WeeChat 4.7.2)
2026-03-11 09:46:31 +0100emmanuelux(~em@user/emmanuelux) (Quit: bye)
2026-03-11 09:46:40 +0100GdeVolpiano(~GdeVolpia@user/GdeVolpiano) GdeVolpiano
2026-03-11 09:59:09 +0100acidjnk_new(~acidjnk@p200300d6e700e547e046c4ed9eed220a.dip0.t-ipconnect.de)
2026-03-11 10:07:30 +0100merijn(~merijn@77.242.116.146) merijn
2026-03-11 10:13:32 +0100lol__(~lol@2603:3016:1e01:b980:b5f8:9e30:8739:5bae)
2026-03-11 10:17:06 +0100lol_(~lol@2603:3016:1e01:b980:ddc8:52aa:8a26:613f) (Ping timeout: 248 seconds)
2026-03-11 10:17:38 +0100jcarpenter2(~lol@2603:3016:1e01:b980:ddc8:52aa:8a26:613f) (Ping timeout: 248 seconds)
2026-03-11 10:18:04 +0100jcarpenter2(~lol@2603:3016:1e01:b980:b5f8:9e30:8739:5bae)
2026-03-11 10:22:22 +0100anpad(~pandeyan@user/anpad) (Quit: ZNC 1.10.1 - https://znc.in)
2026-03-11 10:23:33 +0100vpan(~vpan@212.117.1.172)
2026-03-11 10:23:52 +0100vpanGuest4862
2026-03-11 10:24:08 +0100Guest4862vpan
2026-03-11 10:24:48 +0100anpad(~pandeyan@user/anpad) anpad
2026-03-11 10:32:06 +0100__monty__(~toonn@user/toonn) toonn
2026-03-11 10:32:44 +0100danza(~danza@user/danza) danza
2026-03-11 10:43:15 +0100dhil(~dhil@5.151.29.140) dhil
2026-03-11 10:52:15 +0100prdak(~Thunderbi@user/prdak) prdak
2026-03-11 10:53:07 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 264 seconds)
2026-03-11 10:55:06 +0100comerijn(~merijn@77.242.116.146) merijn
2026-03-11 10:58:34 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 268 seconds)
2026-03-11 11:30:47 +0100 <gentauro> oskarw: speaking of space, how do you handle (securely) space gamma rays that bit-flips memory
2026-03-11 11:31:02 +0100 <gentauro> you suddently have invalid state in Haskell which normally doesn't allow for invalid states
2026-03-11 11:36:53 +0100 <oskarw> gentauro: Haskell programs are protected by math gods, otherwise it would be impossible for _true_ pure functions
2026-03-11 11:37:50 +0100 <comerijn> gentauro: You buy ECC memory and stop thinking about it
2026-03-11 11:38:17 +0100 <comerijn> Assuming you can get a new mortgage to afford said memory
2026-03-11 11:38:21 +0100comerijnmerijn
2026-03-11 11:49:36 +0100somemathguy(~somemathg@user/somemathguy) (Ping timeout: 264 seconds)
2026-03-11 11:50:41 +0100acidjnk_new3(~acidjnk@p200300d6e700e503f643e9bea9c15385.dip0.t-ipconnect.de)
2026-03-11 11:53:43 +0100 <mesaoptimizer> Haskell doesn't have a defined operational semantics, but does it have a well-defined denotational semantics?
2026-03-11 11:54:04 +0100acidjnk_new(~acidjnk@p200300d6e700e547e046c4ed9eed220a.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2026-03-11 12:01:50 +0100fun-safe-math(~fun-safe-@97.115.234.213) ()
2026-03-11 12:02:51 +0100 <gentauro> comonad: even ECC mem can be impacted
2026-03-11 12:03:49 +0100 <mesaoptimizer> seems like https://ircbrowse.net/ is dead?
2026-03-11 12:03:59 +0100fun-safe-math(~fun-safe-@97.115.234.213) fun-safe-math
2026-03-11 12:04:05 +0100gentaurothx abailly for -> https://abailly.github.io/posts/a-modern-haskell-env.html (just copy/pasta and it worked. Now I get `red` if any error <3)
2026-03-11 12:04:52 +0100 <mesaoptimizer> oh there's a new logs link in the topic, never mind
2026-03-11 12:08:15 +0100Digit(~user@user/digit) (Ping timeout: 268 seconds)
2026-03-11 12:08:17 +0100Digitteknohippie(~user@user/digit) Digit
2026-03-11 12:11:59 +0100prdak(~Thunderbi@user/prdak) (Ping timeout: 245 seconds)
2026-03-11 12:12:30 +0100prdak(~Thunderbi@user/prdak) prdak
2026-03-11 12:16:54 +0100prdak(~Thunderbi@user/prdak) (Ping timeout: 246 seconds)
2026-03-11 12:18:22 +0100danz19215(~danza@user/danza) danza
2026-03-11 12:20:44 +0100danza(~danza@user/danza) (Ping timeout: 265 seconds)
2026-03-11 12:22:03 +0100somemathguy(~somemathg@user/somemathguy) somemathguy
2026-03-11 12:27:34 +0100vpan(~vpan@212.117.1.172) (Quit: Leaving.)
2026-03-11 12:29:54 +0100oskarw(~user@user/oskarw) (Remote host closed the connection)
2026-03-11 12:35:48 +0100Digitteknohippie(~user@user/digit) (Ping timeout: 246 seconds)
2026-03-11 12:38:55 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 245 seconds)
2026-03-11 12:43:41 +0100oskarw(~user@user/oskarw) oskarw
2026-03-11 12:48:49 +0100yin(~zero@user/zero) (Remote host closed the connection)
2026-03-11 12:49:51 +0100prdak(~Thunderbi@user/prdak) prdak
2026-03-11 12:49:51 +0100prdak(~Thunderbi@user/prdak) (Read error: Connection reset by peer)
2026-03-11 12:50:05 +0100prdak(~Thunderbi@user/prdak) prdak
2026-03-11 12:50:51 +0100yin(~zero@user/zero) zero
2026-03-11 12:59:33 +0100Digitteknohippie(~user@user/digit) Digit
2026-03-11 13:01:43 +0100danz19215(~danza@user/danza) (Remote host closed the connection)
2026-03-11 13:04:25 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2026-03-11 13:29:32 +0100DigitteknohippieDigit
2026-03-11 13:33:00 +0100adamCS(~adamCS@70.19.85.77) (Remote host closed the connection)
2026-03-11 13:34:41 +0100FANTOM(~fantom@90.251.214.54) (Ping timeout: 265 seconds)
2026-03-11 13:34:52 +0100adamCS(~adamCS@70.19.85.77) adamCS