| 2026-03-11 00:03:30 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-03-11 00:14:23 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 00:14:23 +0100 | Sgeo | (~Sgeo@user/sgeo) Sgeo |
| 2026-03-11 00:19:07 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-03-11 00:30:10 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 00:35:08 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-03-11 00:37:58 +0100 | Tuplanolla | (~Tuplanoll@88-114-89-88.elisa-laajakaista.fi) Tuplanolla |
| 2026-03-11 00:45:57 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 00:49:05 +0100 | mmaruseacph2 | (~mihai@mihai.page) (Ping timeout: 265 seconds) |
| 2026-03-11 00:49:30 +0100 | prdak | (~Thunderbi@user/prdak) prdak |
| 2026-03-11 00:49:36 +0100 | mmaruseacph2 | (~mihai@mihai.page) mmaruseacph2 |
| 2026-03-11 00:51:00 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds) |
| 2026-03-11 00:51:46 +0100 | emmanuelux | (~em@user/emmanuelux) emmanuelux |
| 2026-03-11 00:53:01 +0100 | bionade24 | (~quassel@server2.oscloud.info) (Quit: Apocalypse Incoming!) |
| 2026-03-11 00:53:13 +0100 | bionade24 | (~quassel@server2.oscloud.info) bionade24 |
| 2026-03-11 00:54:09 +0100 | prdak | (~Thunderbi@user/prdak) (Ping timeout: 255 seconds) |
| 2026-03-11 01:17:18 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 01:19:59 +0100 | Square | (~Square4@user/square) Square |
| 2026-03-11 01:20:18 +0100 | Square2 | (~Square4@user/square) (Ping timeout: 246 seconds) |
| 2026-03-11 01:22:08 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-03-11 01:22:23 +0100 | acidjnk_new | (~acidjnk@p200300d6e700e547f0589d3e513577e0.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 2026-03-11 01:32:43 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 01:37:48 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds) |
| 2026-03-11 01:48:29 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 01:55:14 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2026-03-11 01:59:49 +0100 | Googulator | (~Googulato@2a01-036d-0106-0119-01e8-0aed-2fac-7c8a.pool6.digikabel.hu) (Quit: Client closed) |
| 2026-03-11 02:00:04 +0100 | Googulator | (~Googulato@2a01-036d-0106-0119-01e8-0aed-2fac-7c8a.pool6.digikabel.hu) |
| 2026-03-11 02:02:19 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds) |
| 2026-03-11 02:06:04 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 02:10:43 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-03-11 02:15:24 +0100 | czan | (~czan@user/mange) czan |
| 2026-03-11 02:21:51 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 02:26:25 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-03-11 02:28:21 +0100 | AlexNoo_ | (~AlexNoo@5.139.232.240) |
| 2026-03-11 02:29:50 +0100 | Alex_delenda_est | (~al_test@178.34.160.184) (Ping timeout: 244 seconds) |
| 2026-03-11 02:31:00 +0100 | AlexZenon | (~alzenon@178.34.160.184) (Ping timeout: 264 seconds) |
| 2026-03-11 02:32:12 +0100 | AlexNoo | (~AlexNoo@178.34.160.184) (Ping timeout: 264 seconds) |
| 2026-03-11 02:32:22 +0100 | califax | (~califax@user/califx) (Remote host closed the connection) |
| 2026-03-11 02:33:06 +0100 | Tuplanolla | (~Tuplanoll@88-114-89-88.elisa-laajakaista.fi) (Ping timeout: 248 seconds) |
| 2026-03-11 02:33:23 +0100 | califax | (~califax@user/califx) califx |
| 2026-03-11 02:34:26 +0100 | peterbecich | (~Thunderbi@71.84.33.135) peterbecich |
| 2026-03-11 02:34:49 +0100 | AlexZenon | (~alzenon@5.139.232.240) |
| 2026-03-11 02:37:38 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 02:41:03 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) ChaiTRex |
| 2026-03-11 02:44:24 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds) |
| 2026-03-11 02:47:03 +0100 | img | (~img@user/img) (Quit: ZNC 1.10.1 - https://znc.in) |
| 2026-03-11 02:48:18 +0100 | img | (~img@user/img) img |
| 2026-03-11 02:55:40 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 03:00:54 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2026-03-11 03:02:49 +0100 | confusedalex_ | (~confuseda@user/confusedalex) confusedalex |
| 2026-03-11 03:03:14 +0100 | confusedalex | (~confuseda@user/confusedalex) (Ping timeout: 245 seconds) |
| 2026-03-11 03:03:14 +0100 | confusedalex_ | confusedalex |
| 2026-03-11 03:03:28 +0100 | czan` | (~czan@user/mange) czan |
| 2026-03-11 03:03:59 +0100 | czan | (~czan@user/mange) (Killed (NickServ (GHOST command used by czan`))) |
| 2026-03-11 03:04:05 +0100 | czan` | czan |
| 2026-03-11 03:04:59 +0100 | rekahsoft | (~rekahsoft@76.67.111.168) (Read error: Connection reset by peer) |
| 2026-03-11 03:07:06 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds) |
| 2026-03-11 03:11:28 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 03:15:49 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-03-11 03:22:26 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) ChaiTRex |
| 2026-03-11 03:27:01 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 03:31:33 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-03-11 03:42:23 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 03:44:01 +0100 | pabs3 | Guest1123 |
| 2026-03-11 03:44:01 +0100 | Guest1123 | (~pabs3@user/pabs3) (Killed (uranium.libera.chat (Nickname regained by services))) |
| 2026-03-11 03:44:18 +0100 | pabs3 | (~pabs3@user/pabs3) pabs3 |
| 2026-03-11 03:44:24 +0100 | Googulator | (~Googulato@2a01-036d-0106-0119-01e8-0aed-2fac-7c8a.pool6.digikabel.hu) (Quit: Client closed) |
| 2026-03-11 03:46:59 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-03-11 03:55:30 +0100 | peterbecich | (~Thunderbi@71.84.33.135) (Ping timeout: 255 seconds) |
| 2026-03-11 03:58:09 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 03:59:42 +0100 | stackdroid18 | (~stackdroi@user/stackdroid) () |
| 2026-03-11 04:02:24 +0100 | terrorjack | (~terrorjac@2a01:4f8:271:2d98::2) (Quit: The Lounge - https://thelounge.chat) |
| 2026-03-11 04:02:50 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-03-11 04:07:57 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 2026-03-11 04:08:19 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) ChaiTRex |
| 2026-03-11 04:10:08 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 04:11:18 +0100 | gabiruh | (~gabiruh@vps19177.publiccloud.com.br) (Quit: ZNC 1.7.5 - https://znc.in) |
| 2026-03-11 04:11:35 +0100 | gabiruh | (~gabiruh@vps19177.publiccloud.com.br) gabiruh |
| 2026-03-11 04:12:42 +0100 | rekahsoft | (~rekahsoft@76.67.111.168) rekahsoft |
| 2026-03-11 04:14:59 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 2026-03-11 04:22:28 +0100 | rekahsoft | (~rekahsoft@76.67.111.168) (Read error: Connection reset by peer) |
| 2026-03-11 04:25:33 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 04:32:17 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2026-03-11 04:37:33 +0100 | rekahsoft | (~rekahsoft@bras-base-orllon1103w-grc-20-76-67-111-168.dsl.bell.ca) rekahsoft |
| 2026-03-11 04:37:44 +0100 | peterbecich | (~Thunderbi@71.84.33.135) peterbecich |
| 2026-03-11 04:41:12 +0100 | jmcantrell_ | (~weechat@user/jmcantrell) jmcantrell |
| 2026-03-11 04:43:36 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 04:46:45 +0100 | Square | (~Square4@user/square) (Ping timeout: 244 seconds) |
| 2026-03-11 04:47:00 +0100 | tusko | (~uwu@user/tusko) (Remote host closed the connection) |
| 2026-03-11 04:48:11 +0100 | machinedgod | (~machinedg@d172-219-48-230.abhsia.telus.net) (Ping timeout: 268 seconds) |
| 2026-03-11 04:48:36 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds) |
| 2026-03-11 04:52:17 +0100 | tusko | (~uwu@user/tusko) tusko |
| 2026-03-11 04:54:42 +0100 | rekahsoft | (~rekahsoft@bras-base-orllon1103w-grc-20-76-67-111-168.dsl.bell.ca) (Remote host closed the connection) |
| 2026-03-11 04:55:00 +0100 | haritz | (~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in) |
| 2026-03-11 04:59:22 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 05:00:15 +0100 | jmcantrell_ | (~weechat@user/jmcantrell) (Ping timeout: 272 seconds) |
| 2026-03-11 05:03:55 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-03-11 05:06:10 +0100 | pandeyan | (~pandeyan@192-184-248-122.fiber.dynamic.sonic.net) (Ping timeout: 248 seconds) |
| 2026-03-11 05:06:34 +0100 | terrorjack | (~terrorjac@2a01:4f8:271:2d98::2) terrorjack |
| 2026-03-11 05:12:46 +0100 | terrorjack | (~terrorjac@2a01:4f8:271:2d98::2) (Quit: The Lounge - https://thelounge.chat) |
| 2026-03-11 05:14:48 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 05:14:49 +0100 | peterbecich | (~Thunderbi@71.84.33.135) (Ping timeout: 272 seconds) |
| 2026-03-11 05:16:04 +0100 | terrorjack | (~terrorjac@2a01:4f8:271:2d98::2) terrorjack |
| 2026-03-11 05:19:44 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 2026-03-11 05:30:35 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 05:35:27 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-03-11 05:36:19 +0100 | chromoblob | (~chromoblo@user/chromob1ot1c) (Ping timeout: 264 seconds) |
| 2026-03-11 05:51:27 +0100 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
| 2026-03-11 05:58:03 +0100 | chromoblob | (~chromoblo@user/chromob1ot1c) (Ping timeout: 244 seconds) |
| 2026-03-11 06:00:50 +0100 | takuan | (~takuan@d8D86B9E9.access.telenet.be) |
| 2026-03-11 06:00:57 +0100 | arandombit | (~arandombi@2a02:2455:8656:7100:49ae:b06e:43ec:7652) |
| 2026-03-11 06:00:57 +0100 | arandombit | (~arandombi@2a02:2455:8656:7100:49ae:b06e:43ec:7652) (Changing host) |
| 2026-03-11 06:00:57 +0100 | arandombit | (~arandombi@user/arandombit) arandombit |
| 2026-03-11 06:02:10 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 06:05:28 +0100 | Gravifer | (~Gravifer@user/Gravifer) Gravifer |
| 2026-03-11 06:06:19 +0100 | arandombit | (~arandombi@user/arandombit) (Ping timeout: 244 seconds) |
| 2026-03-11 06:09:21 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
| 2026-03-11 06:11:10 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 06:16:28 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 2026-03-11 06:26:41 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 06:31:31 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-03-11 06:33:10 +0100 | peterbecich | (~Thunderbi@71.84.33.135) peterbecich |
| 2026-03-11 06:36:05 +0100 | anpad | (~pandeyan@user/anpad) anpad |
| 2026-03-11 06:37:34 +0100 | michalz | (~michalz@185.246.207.221) |
| 2026-03-11 06:39:28 +0100 | Gravifer | (~Gravifer@user/Gravifer) (Ping timeout: 240 seconds) |
| 2026-03-11 06:42:09 +0100 | divlamir | (~divlamir@user/divlamir) (Read error: Connection reset by peer) |
| 2026-03-11 06:42:25 +0100 | divlamir | (~divlamir@user/divlamir) divlamir |
| 2026-03-11 06:44:36 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 06:47:38 +0100 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
| 2026-03-11 06:49:06 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2026-03-11 06:51:46 +0100 | chromoblob | (~chromoblo@user/chromob1ot1c) (Ping timeout: 248 seconds) |
| 2026-03-11 06:59:54 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 07:05:12 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-03-11 07:06:51 +0100 | arandombit | (~arandombi@2a02:2455:8656:7100:cd70:20e7:538d:131c) |
| 2026-03-11 07:06:51 +0100 | arandombit | (~arandombi@2a02:2455:8656:7100:cd70:20e7:538d:131c) (Changing host) |
| 2026-03-11 07:06:51 +0100 | arandombit | (~arandombi@user/arandombit) arandombit |
| 2026-03-11 07:12:08 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 07:16:00 +0100 | jreicher | (~joelr@user/jreicher) (Quit: brb) |
| 2026-03-11 07:16:25 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-03-11 07:26:24 +0100 | peterbecich | (~Thunderbi@71.84.33.135) (Ping timeout: 246 seconds) |
| 2026-03-11 07:26:43 +0100 | jreicher | (~joelr@user/jreicher) jreicher |
| 2026-03-11 07:27:30 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 07:32:50 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
| 2026-03-11 07:42:47 +0100 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
| 2026-03-11 07:43:16 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 07:47:15 +0100 | chromoblob | (~chromoblo@user/chromob1ot1c) (Ping timeout: 255 seconds) |
| 2026-03-11 07:48:12 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2026-03-11 07:53:45 +0100 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
| 2026-03-11 07:59:04 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 08:03:46 +0100 | merijn | (~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 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 2026-03-11 08:13:08 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 08:15:17 +0100 | gentauro | I 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 +0100 | merijn | (~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 +0100 | humasect | (~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 +0100 | chele | (~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 +0100 | merijn | (~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 +0100 | merijn | (~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 +0100 | arandombit | (~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 +0100 | ski | . 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 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 08:49:24 +0100 | Digit | (~user@user/digit) (Ping timeout: 256 seconds) |
| 2026-03-11 08:49:34 +0100 | Digitteknohippie | (~user@user/digit) Digit |
| 2026-03-11 08:49:37 +0100 | oskarw | (~user@user/oskarw) oskarw |
| 2026-03-11 08:51:50 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-03-11 08:53:38 +0100 | CiaoSen | (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen |
| 2026-03-11 08:53:56 +0100 | poscat0x04 | (~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 +0100 | poscat | (~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 +0100 | humasect | (~humasect@184.151.37.182) (Quit: Leaving...) |
| 2026-03-11 09:02:45 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-03-11 09:03:55 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) sord937 |
| 2026-03-11 09:07:24 +0100 | merijn | (~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 +0100 | humasect | (~humasect@184.151.37.182) humasect |
| 2026-03-11 09:14:08 +0100 | merijn | (~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 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-03-11 09:21:06 +0100 | chromoblob | (~chromoblo@user/chromob1ot1c) (Ping timeout: 244 seconds) |
| 2026-03-11 09:21:39 +0100 | Digitteknohippie | Digit |
| 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 +0100 | tusko | (~uwu@user/tusko) (Remote host closed the connection) |
| 2026-03-11 09:26:39 +0100 | tusko | (~uwu@user/tusko) tusko |
| 2026-03-11 09:33:03 +0100 | humasect | (~humasect@184.151.37.182) (Quit: Leaving...) |
| 2026-03-11 09:34:39 +0100 | prdak | (~Thunderbi@user/prdak) prdak |
| 2026-03-11 09:38:58 +0100 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 2026-03-11 09:39:11 +0100 | prdak | (~Thunderbi@user/prdak) (Ping timeout: 244 seconds) |
| 2026-03-11 09:39:22 +0100 | chromoblob | (~chromoblo@user/chromob1ot1c) chromoblob\0 |
| 2026-03-11 09:44:04 +0100 | GdeVolpiano | (~GdeVolpia@user/GdeVolpiano) (Quit: WeeChat 4.7.2) |
| 2026-03-11 09:46:31 +0100 | emmanuelux | (~em@user/emmanuelux) (Quit: bye) |
| 2026-03-11 09:46:40 +0100 | GdeVolpiano | (~GdeVolpia@user/GdeVolpiano) GdeVolpiano |
| 2026-03-11 09:59:09 +0100 | acidjnk_new | (~acidjnk@p200300d6e700e547e046c4ed9eed220a.dip0.t-ipconnect.de) |
| 2026-03-11 10:07:30 +0100 | merijn | (~merijn@77.242.116.146) merijn |
| 2026-03-11 10:13:32 +0100 | lol__ | (~lol@2603:3016:1e01:b980:b5f8:9e30:8739:5bae) |
| 2026-03-11 10:17:06 +0100 | lol_ | (~lol@2603:3016:1e01:b980:ddc8:52aa:8a26:613f) (Ping timeout: 248 seconds) |
| 2026-03-11 10:17:38 +0100 | jcarpenter2 | (~lol@2603:3016:1e01:b980:ddc8:52aa:8a26:613f) (Ping timeout: 248 seconds) |
| 2026-03-11 10:18:04 +0100 | jcarpenter2 | (~lol@2603:3016:1e01:b980:b5f8:9e30:8739:5bae) |
| 2026-03-11 10:22:22 +0100 | anpad | (~pandeyan@user/anpad) (Quit: ZNC 1.10.1 - https://znc.in) |
| 2026-03-11 10:23:33 +0100 | vpan | (~vpan@212.117.1.172) |
| 2026-03-11 10:23:52 +0100 | vpan | Guest4862 |
| 2026-03-11 10:24:08 +0100 | Guest4862 | vpan |
| 2026-03-11 10:24:48 +0100 | anpad | (~pandeyan@user/anpad) anpad |
| 2026-03-11 10:32:06 +0100 | __monty__ | (~toonn@user/toonn) toonn |
| 2026-03-11 10:32:44 +0100 | danza | (~danza@user/danza) danza |
| 2026-03-11 10:43:15 +0100 | dhil | (~dhil@5.151.29.140) dhil |
| 2026-03-11 10:52:15 +0100 | prdak | (~Thunderbi@user/prdak) prdak |
| 2026-03-11 10:53:07 +0100 | chromoblob | (~chromoblo@user/chromob1ot1c) (Ping timeout: 264 seconds) |
| 2026-03-11 10:55:06 +0100 | comerijn | (~merijn@77.242.116.146) merijn |
| 2026-03-11 10:58:34 +0100 | merijn | (~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 +0100 | comerijn | merijn |
| 2026-03-11 11:49:36 +0100 | somemathguy | (~somemathg@user/somemathguy) (Ping timeout: 264 seconds) |
| 2026-03-11 11:50:41 +0100 | acidjnk_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 +0100 | acidjnk_new | (~acidjnk@p200300d6e700e547e046c4ed9eed220a.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 2026-03-11 12:01:50 +0100 | fun-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 +0100 | fun-safe-math | (~fun-safe-@97.115.234.213) fun-safe-math |
| 2026-03-11 12:04:05 +0100 | gentauro | thx 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 +0100 | Digit | (~user@user/digit) (Ping timeout: 268 seconds) |
| 2026-03-11 12:08:17 +0100 | Digitteknohippie | (~user@user/digit) Digit |
| 2026-03-11 12:11:59 +0100 | prdak | (~Thunderbi@user/prdak) (Ping timeout: 245 seconds) |
| 2026-03-11 12:12:30 +0100 | prdak | (~Thunderbi@user/prdak) prdak |
| 2026-03-11 12:16:54 +0100 | prdak | (~Thunderbi@user/prdak) (Ping timeout: 246 seconds) |
| 2026-03-11 12:18:22 +0100 | danz19215 | (~danza@user/danza) danza |
| 2026-03-11 12:20:44 +0100 | danza | (~danza@user/danza) (Ping timeout: 265 seconds) |
| 2026-03-11 12:22:03 +0100 | somemathguy | (~somemathg@user/somemathguy) somemathguy |
| 2026-03-11 12:27:34 +0100 | vpan | (~vpan@212.117.1.172) (Quit: Leaving.) |
| 2026-03-11 12:29:54 +0100 | oskarw | (~user@user/oskarw) (Remote host closed the connection) |
| 2026-03-11 12:35:48 +0100 | Digitteknohippie | (~user@user/digit) (Ping timeout: 246 seconds) |
| 2026-03-11 12:38:55 +0100 | CiaoSen | (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 245 seconds) |
| 2026-03-11 12:43:41 +0100 | oskarw | (~user@user/oskarw) oskarw |
| 2026-03-11 12:48:49 +0100 | yin | (~zero@user/zero) (Remote host closed the connection) |
| 2026-03-11 12:49:51 +0100 | prdak | (~Thunderbi@user/prdak) prdak |
| 2026-03-11 12:49:51 +0100 | prdak | (~Thunderbi@user/prdak) (Read error: Connection reset by peer) |
| 2026-03-11 12:50:05 +0100 | prdak | (~Thunderbi@user/prdak) prdak |
| 2026-03-11 12:50:51 +0100 | yin | (~zero@user/zero) zero |
| 2026-03-11 12:59:33 +0100 | Digitteknohippie | (~user@user/digit) Digit |
| 2026-03-11 13:01:43 +0100 | danz19215 | (~danza@user/danza) (Remote host closed the connection) |
| 2026-03-11 13:04:25 +0100 | CiaoSen | (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen |
| 2026-03-11 13:29:32 +0100 | Digitteknohippie | Digit |
| 2026-03-11 13:33:00 +0100 | adamCS | (~adamCS@70.19.85.77) (Remote host closed the connection) |
| 2026-03-11 13:34:41 +0100 | FANTOM | (~fantom@90.251.214.54) (Ping timeout: 265 seconds) |
| 2026-03-11 13:34:52 +0100 | adamCS | (~adamCS@70.19.85.77) adamCS |
| 2026-03-11 13:40:10 +0100 | FANTOM | (~fantom@90.251.214.54) |
| 2026-03-11 13:41:31 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 258 seconds) |
| 2026-03-11 14:01:38 +0100 | czan | (~czan@user/mange) (Ping timeout: 248 seconds) |
| 2026-03-11 14:06:08 +0100 | AlexNoo_ | AlexNoo |
| 2026-03-11 14:07:06 +0100 | Alex_delenda_est | (~al_test@5.139.232.240) |
| 2026-03-11 14:10:10 +0100 | lortabac | (~lortabac@mx1.fracta.dev) (Ping timeout: 245 seconds) |
| 2026-03-11 14:11:07 +0100 | lortabac | (~lortabac@mx1.fracta.dev) lortabac |
| 2026-03-11 14:17:52 +0100 | somemathguy | (~somemathg@user/somemathguy) (Quit: WeeChat 4.1.1) |
| 2026-03-11 14:20:06 +0100 | sam113101 | (~sam@modemcable200.189-202-24.mc.videotron.ca) (Read error: Connection reset by peer) |
| 2026-03-11 14:20:29 +0100 | sam113101 | (~sam@modemcable200.189-202-24.mc.videotron.ca) sam113101 |
| 2026-03-11 14:24:44 +0100 | qqq | (~qqq@185.54.22.246) |
| 2026-03-11 14:34:49 +0100 | arandombit | (~arandombi@2a02:2455:8656:7100:cd70:20e7:538d:131c) |
| 2026-03-11 14:34:49 +0100 | arandombit | (~arandombi@2a02:2455:8656:7100:cd70:20e7:538d:131c) (Changing host) |
| 2026-03-11 14:34:49 +0100 | arandombit | (~arandombi@user/arandombit) arandombit |
| 2026-03-11 14:45:38 +0100 | Guest34 | (~Guest17@37.30.32.80) |
| 2026-03-11 14:47:34 +0100 | <Guest34> | Make me a haskell script to talk with GPT-4 |
| 2026-03-11 14:52:36 +0100 | <probie> | Guest34: What features do you want? |
| 2026-03-11 14:53:58 +0100 | Guest34 | (~Guest17@37.30.32.80) (Quit: Client closed) |
| 2026-03-11 14:57:37 +0100 | qqq | (~qqq@185.54.22.246) (Remote host closed the connection) |
| 2026-03-11 15:07:59 +0100 | qqq | (~qqq@185.54.22.246) |
| 2026-03-11 15:08:48 +0100 | prdak | (~Thunderbi@user/prdak) (Ping timeout: 264 seconds) |
| 2026-03-11 15:09:22 +0100 | mud | (~mud@user/kadoban) (Ping timeout: 248 seconds) |
| 2026-03-11 15:09:27 +0100 | kadobanana | (~mud@user/kadoban) kadoban |
| 2026-03-11 15:16:55 +0100 | traxex | (traxex@user/traxex) traxex |
| 2026-03-11 15:25:52 +0100 | Alex_delenda_est | (~al_test@5.139.232.240) (Ping timeout: 244 seconds) |
| 2026-03-11 15:35:20 +0100 | machinedgod | (~machinedg@d172-219-48-230.abhsia.telus.net) machinedgod |
| 2026-03-11 15:39:42 +0100 | prdak | (~Thunderbi@user/prdak) prdak |
| 2026-03-11 15:51:01 +0100 | Square | (~Square4@user/square) Square |
| 2026-03-11 15:54:01 +0100 | haritz | (~hrtz@140.228.70.141) |
| 2026-03-11 15:54:01 +0100 | haritz | (~hrtz@140.228.70.141) (Changing host) |
| 2026-03-11 15:54:01 +0100 | haritz | (~hrtz@user/haritz) haritz |
| 2026-03-11 15:58:20 +0100 | <tomsmeding> | that sounds like a prompt you can give to GPT-4 :p |
| 2026-03-11 16:01:39 +0100 | kuribas | (~user@2a02-1810-2825-6000-4935-dc75-5b6f-4493.ip6.access.telenet.be) kuribas |
| 2026-03-11 16:17:51 +0100 | <dminuoso> | mesaoptimizer: Well, in reality it only has operational semantics as defined by whatever GHC does. |
| 2026-03-11 16:18:52 +0100 | <dminuoso> | The Haskell reports did some very vague attempts of denotational semantics, but in reality that term defines mathematical rigor - something nobody has ever done. |
| 2026-03-11 16:20:22 +0100 | skinkitten | (~skinkitte@user/skinkitten) skinkitten |
| 2026-03-11 16:26:10 +0100 | <tomsmeding> | dminuoso: what do you mean with "defines mathematical rigor"? |
| 2026-03-11 16:26:18 +0100 | <dminuoso> | Some researchers have published papers on this subject, but they were all to just subsets of GHC haskell. A related problem would be defining what Haskell even is in 2026 - what extensions should be included in a full denotational semantic of Haskell. |
| 2026-03-11 16:27:02 +0100 | <tomsmeding> | I suspect that all that people actually care about is a semantics of Haskell98 without the FFI |
| 2026-03-11 16:27:40 +0100 | <tomsmeding> | the rest is going to be either syntactic sugar or complex, ad-hoc stuff that doesn't enlighten anyone about anything |
| 2026-03-11 16:28:20 +0100 | <dminuoso> | Dunno, I can think of a few extensions that have meaning like GADTs |
| 2026-03-11 16:28:49 +0100 | <tomsmeding> | hm, fair point |
| 2026-03-11 16:29:29 +0100 | <tomsmeding> | in operational semantics you can exclude GADTs because you don't need types at runtime, but in denotational semantics the point is to retain types |
| 2026-03-11 16:30:15 +0100 | <dminuoso> | tomsmeding: What about things like all the type wizardry (TypeInType, TyFams, etc)? |
| 2026-03-11 16:31:00 +0100 | <tomsmeding> | ... I guess that types are actually relevant, even in operational semantics, depending on how you model type class resolution |
| 2026-03-11 16:31:30 +0100 | <tomsmeding> | yes you're right, for denotational semantics all that's important |
| 2026-03-11 16:31:45 +0100 | <tomsmeding> | I was somehow only thinking of LambdaCase etc., which are not |
| 2026-03-11 16:32:32 +0100 | prdak1 | (~Thunderbi@user/prdak) prdak |
| 2026-03-11 16:32:52 +0100 | <dminuoso> | I think a more accurate phrasing would be "It is possible to attach denotational semantics to a subset of Haskell", rather than saying that we *have* them (which might suggest that the language was signed ontop of it) |
| 2026-03-11 16:33:14 +0100 | <tomsmeding> | isn't it possible to attach denotational semantics to anything? |
| 2026-03-11 16:33:20 +0100 | <tomsmeding> | perhaps "useful denotational semantics" |
| 2026-03-11 16:33:41 +0100 | <tomsmeding> | like, one that actually models interesting structure of the language |
| 2026-03-11 16:34:01 +0100 | <tomsmeding> | in terms of "relatively" simple categorical constructrs |
| 2026-03-11 16:35:39 +0100 | <tomsmeding> | s/trs$/ts/ |
| 2026-03-11 16:35:42 +0100 | <dminuoso> | It seems rather like a useful vehicle to do some research, rather than defining a language. |
| 2026-03-11 16:36:19 +0100 | prdak | (~Thunderbi@user/prdak) (Ping timeout: 264 seconds) |
| 2026-03-11 16:36:20 +0100 | prdak1 | prdak |
| 2026-03-11 16:36:29 +0100 | <tomsmeding> | AFAIK denotational semantics also tends not to say anything about operational concerns such as order of evaluation |
| 2026-03-11 16:36:39 +0100 | <dminuoso> | Well, that depends on you I think. |
| 2026-03-11 16:36:52 +0100 | <dminuoso> | Nothing stops you from imposing an order of some kind to your denotation. |
| 2026-03-11 16:36:52 +0100 | <tomsmeding> | while in a language specification, you definitely want to know it if the language deviates from call-by-value |
| 2026-03-11 16:36:56 +0100 | <tomsmeding> | right |
| 2026-03-11 16:37:46 +0100 | <tomsmeding> | but in that case, "has haskell a denotational semantics" should just be answered with "for what purpose" |
| 2026-03-11 16:38:13 +0100 | <tomsmeding> | there being multiple levels of representation accuracy, and probably also multiple distinct designs at the same level |
| 2026-03-11 16:48:26 +0100 | skinkitten | (~skinkitte@user/skinkitten) (Quit: Client closed) |
| 2026-03-11 16:56:15 +0100 | prdak | (~Thunderbi@user/prdak) (Read error: Connection reset by peer) |
| 2026-03-11 16:56:21 +0100 | prdak1 | (~Thunderbi@user/prdak) prdak |
| 2026-03-11 16:58:42 +0100 | prdak1 | prdak |
| 2026-03-11 17:00:50 +0100 | Alex_delenda_est | (~al_test@5.139.232.240) |
| 2026-03-11 17:01:59 +0100 | Enrico63 | (~Enrico63@host-82-61-84-117.retail.telecomitalia.it) Enrico63 |
| 2026-03-11 17:02:26 +0100 | tromp | (~textual@2001:1c00:3487:1b00:2807:b44c:c102:bda9) |
| 2026-03-11 17:03:37 +0100 | dolio | (~dolio@130.44.140.168) (Quit: ZNC 1.10.1 - https://znc.in) |
| 2026-03-11 17:05:29 +0100 | madresch | (~Thunderbi@user/madresch) madresch |
| 2026-03-11 17:09:06 +0100 | dolio | (~dolio@130.44.140.168) dolio |