2026/06/01

2026-06-01 00:00:46 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 00:03:55 +0000vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 264 seconds)
2026-06-01 00:05:19 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-01 00:12:04 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:38f5:bb0d:8796:a6f) (Quit: ricardomaps)
2026-06-01 00:16:18 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 00:23:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-06-01 00:23:39 +0000xff0x(~xff0x@2405:6580:b080:900:1e8e:69be:97e9:df50) (Ping timeout: 245 seconds)
2026-06-01 00:32:30 +0000califax(~califax@user/califx) (Remote host closed the connection)
2026-06-01 00:34:18 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 00:34:28 +0000califax(~califax@user/califx) califx
2026-06-01 00:39:05 +0000cawfee(root@2401:c080:3800:3460::babe) (Remote host closed the connection)
2026-06-01 00:39:37 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-06-01 01:01:48 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2026-06-01 01:02:55 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:38f5:bb0d:8796:a6f)
2026-06-01 01:04:07 +0000acidjnk(~acidjnk@p200300d6e700e50749931930275f1dba.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2026-06-01 01:04:07 +0000acidjnk_new3(~acidjnk@p200300d6e700e50749931930275f1dba.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2026-06-01 01:18:11 +0000myxos(~myxos@67-1-178-42.tcso.qwest.net) (Remote host closed the connection)
2026-06-01 01:21:16 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2026-06-01 01:26:49 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-06-01 01:37:58 +0000myxos(~myxos@67-1-178-42.tcso.qwest.net) myxokephale
2026-06-01 01:40:47 +0000bedbedbde(~bedbedbde@user/bedbedbde) bedbedbde
2026-06-01 01:40:48 +0000pavonia(~user@user/siracusa) siracusa
2026-06-01 01:48:09 +0000doyougnu(~doyougnu@38.175.72.111) (Killed (NickServ (GHOST command used by doyougnu`!~user@38.175.72.111)))
2026-06-01 01:50:26 +0000doyougnu(~doyougnu@38.175.72.111)
2026-06-01 01:52:11 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-01 01:54:23 +0000doyougnu(~doyougnu@38.175.72.111) (Killed (NickServ (GHOST command used by doyougnu`!~user@38.175.72.111)))
2026-06-01 01:54:39 +0000doyougnu(~doyougnu@38.175.72.111)
2026-06-01 01:56:24 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 246 seconds)
2026-06-01 01:58:55 +0000doyougnu(~doyougnu@38.175.72.111) (Killed (NickServ (GHOST command used by doyougnu`!~user@38.175.72.111)))
2026-06-01 01:59:42 +0000doyougnu(~doyougnu@38.175.72.111)
2026-06-01 02:03:03 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 02:03:59 +0000doyougnu(~doyougnu@38.175.72.111) (Killed (NickServ (GHOST command used by doyougnu`!~user@38.175.72.111)))
2026-06-01 02:05:17 +0000doyougnu-(~doyougnu@38.175.72.111)
2026-06-01 02:08:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-06-01 02:15:37 +0000td_(~td@i53870937.versanet.de) (Ping timeout: 248 seconds)
2026-06-01 02:17:44 +0000td_(~td@i5387091C.versanet.de)
2026-06-01 02:18:51 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 02:23:55 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2026-06-01 02:34:13 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 02:39:17 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 267 seconds)
2026-06-01 02:40:25 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com) lisbeths
2026-06-01 02:50:02 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 02:50:40 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 252 seconds)
2026-06-01 02:54:57 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-06-01 03:00:24 +0000vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 244 seconds)
2026-06-01 03:01:27 +0000Garbanzo(~Garbanzo@2602:304:6eac:dc10::49)
2026-06-01 03:01:30 +0000Garbanzo__(~Garbanzo@2602:304:6eac:dc10::49) (Ping timeout: 246 seconds)
2026-06-01 03:05:24 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 03:14:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-06-01 03:16:24 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:38f5:bb0d:8796:a6f) (Ping timeout: 252 seconds)
2026-06-01 03:23:36 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-06-01 03:26:42 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 03:31:15 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 241 seconds)
2026-06-01 03:42:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 03:47:30 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-06-01 03:55:16 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 04:00:08 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 243 seconds)
2026-06-01 04:10:49 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 04:15:26 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-06-01 04:20:55 +0000Pozyomka(~pyon@user/pyon) (Quit: brb)
2026-06-01 04:24:02 +0000Pozyomka(~pyon@user/pyon) pyon
2026-06-01 04:25:22 +0000tabaqui(~tabaqui@167.71.80.236) (Ping timeout: 248 seconds)
2026-06-01 04:25:31 +0000jreicher(~joelr@user/jreicher) (Ping timeout: 242 seconds)
2026-06-01 04:26:18 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 04:29:23 +0000jreicher(~joelr@user/jreicher) jreicher
2026-06-01 04:31:51 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2026-06-01 04:34:05 +0000Goodbye_Vincent1(cyvahl@freakshells.net) (Quit: )
2026-06-01 04:35:11 +0000Goodbye_Vincent1(cyvahl@freakshells.net)
2026-06-01 04:40:25 +0000wickedjargon(~user@2605:8d80:5431:c7f3:cb6a:c99b:bed8:74f5) wickedjargon
2026-06-01 04:47:24 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-06-01 04:48:57 +0000vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 272 seconds)
2026-06-01 04:51:26 +0000CiaoSen(~Jura@2a02:3031:2e2:74df:4e50:ddff:fe9b:8922) CiaoSen
2026-06-01 04:51:33 +0000poscat(~poscat@user/poscat) (Remote host closed the connection)
2026-06-01 04:53:32 +0000tabaqui(~tabaqui@167.71.80.236) tabaqui
2026-06-01 04:54:42 +0000poscat(~poscat@user/poscat) poscat
2026-06-01 04:55:44 +0000CiaoSen(~Jura@2a02:3031:2e2:74df:4e50:ddff:fe9b:8922) (Ping timeout: 245 seconds)
2026-06-01 04:57:49 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 05:01:50 +0000haritz(~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
2026-06-01 05:04:29 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-01 05:04:39 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-06-01 05:10:13 +0000olivial(~benjaminl@user/benjaminl) (Remote host closed the connection)
2026-06-01 05:10:29 +0000takuan(~takuan@d8D86B9E9.access.telenet.be)
2026-06-01 05:11:15 +0000olivial(~benjaminl@user/benjaminl) benjaminl
2026-06-01 05:11:56 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 05:16:05 +0000peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 265 seconds)
2026-06-01 05:17:03 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-06-01 05:21:01 +0000GdeVolpiano(~GdeVolpia@user/GdeVolpiano) (Quit: WeeChat 4.7.2)
2026-06-01 05:23:07 +0000synchromesh(~john@2406:5a00:247e:1500:6c73:518b:be6f:ed81) (Read error: Connection reset by peer)
2026-06-01 05:23:38 +0000GdeVolpiano(~GdeVolpia@user/GdeVolpiano) GdeVolpiano
2026-06-01 05:24:09 +0000synchromesh(~john@2406:5a00:247e:1500:6c73:518b:be6f:ed81) synchromesh
2026-06-01 05:25:38 +0000monochrom(~trebla@216.138.220.146) (Quit: ZNC - https://znc.in)
2026-06-01 05:27:27 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:742e:100b:ef44:4bb3)
2026-06-01 05:27:42 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 05:32:12 +0000pfc(~pfc@user/pfc) pfc
2026-06-01 05:35:58 +0000bedbedbde(~bedbedbde@user/bedbedbde) (Read error: Connection reset by peer)
2026-06-01 05:37:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-06-01 05:39:53 +0000sord937(~sord937@gateway/tor-sasl/sord937) sord937
2026-06-01 05:40:23 +0000monochrom(~trebla@216.138.220.146) monochrom
2026-06-01 05:40:29 +0000sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2026-06-01 05:40:50 +0000sord937(~sord937@gateway/tor-sasl/sord937) sord937
2026-06-01 05:43:42 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
2026-06-01 05:45:11 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-06-01 05:47:49 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 05:50:00 +0000acidjnk_new3(~acidjnk@p200300d6e700e5073b062b09158277c9.dip0.t-ipconnect.de)
2026-06-01 05:50:02 +0000acidjnk(~acidjnk@p200300d6e700e5073b062b09158277c9.dip0.t-ipconnect.de) acidjnk
2026-06-01 05:52:12 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-06-01 05:52:15 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-01 06:03:11 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 06:07:04 +0000gentauro(~gentauro@user/gentauro) (Quit: leaving)
2026-06-01 06:08:12 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 243 seconds)
2026-06-01 06:12:57 +0000merijn(~merijn@62.45.136.136) merijn
2026-06-01 06:18:05 +0000merijn(~merijn@62.45.136.136) (Ping timeout: 263 seconds)
2026-06-01 06:21:16 +0000Square3(~Square4@user/square) Square
2026-06-01 06:22:58 +0000Square2(~Square@user/square) (Ping timeout: 252 seconds)
2026-06-01 06:27:24 +0000tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2026-06-01 06:28:48 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 06:29:14 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-06-01 06:35:21 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-06-01 06:38:55 +0000TwinAdam(~TwinAdam@user/adamsaunders) (Ping timeout: 252 seconds)
2026-06-01 06:40:07 +0000TwinAdam(~TwinAdam@user/adamsaunders) adamsaunders
2026-06-01 06:43:50 +0000gentauro(~gentauro@user/gentauro) gentauro
2026-06-01 06:46:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 06:48:40 +0000p3n(~p3n@217.198.124.246) (Quit: ZNC 1.10.1 - https://znc.in)
2026-06-01 06:51:34 +0000vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 252 seconds)
2026-06-01 06:51:54 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2026-06-01 06:59:00 +0000p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) p3n
2026-06-01 06:59:36 +0000p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (Remote host closed the connection)
2026-06-01 07:01:30 +0000juri_(~juri@217-114-215-140.pool.ovpn.com) (Ping timeout: 248 seconds)
2026-06-01 07:02:15 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 07:03:32 +0000juri_(~juri@217-114-215-140.pool.ovpn.com) juri_
2026-06-01 07:04:45 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:742e:100b:ef44:4bb3) (Ping timeout: 245 seconds)
2026-06-01 07:06:25 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-01 07:10:37 +0000p3n(~p3n@217.198.124.246) p3n
2026-06-01 07:12:04 +0000chele(~chele@user/chele) chele
2026-06-01 07:12:49 +0000peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 245 seconds)
2026-06-01 07:13:58 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 07:18:53 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-06-01 07:19:36 +0000sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2026-06-01 07:21:04 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2026-06-01 07:22:00 +0000sord937(~sord937@gateway/tor-sasl/sord937) sord937
2026-06-01 07:29:33 +0000__monty__(~toonn@user/toonn) toonn
2026-06-01 07:46:14 +0000sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2026-06-01 07:46:34 +0000sord937(~sord937@gateway/tor-sasl/sord937) sord937
2026-06-01 07:46:55 +0000michalz(~michalz@185.246.207.221)
2026-06-01 07:48:20 +0000fp1(~Thunderbi@130.233.70.60) fp
2026-06-01 07:49:11 +0000Athas(athas@sigkill.dk) (Quit: ZNC 1.9.1 - https://znc.in)
2026-06-01 07:57:15 +0000merijn(~merijn@77.242.116.146) merijn
2026-06-01 08:05:25 +0000Athas(athas@2a01:7c8:aaac:1cf:41d:56c3:1b40:43c8)
2026-06-01 08:19:00 +0000emmanuelux(~em@user/emmanuelux) (Quit: bye)
2026-06-01 08:20:19 +0000CiaoSen(~Jura@2a02:3031:2e2:74df:4e50:ddff:fe9b:8922) CiaoSen
2026-06-01 08:26:49 +0000CiaoSen(~Jura@2a02:3031:2e2:74df:4e50:ddff:fe9b:8922) (Ping timeout: 272 seconds)
2026-06-01 08:29:53 +0000ft(~ft@p4fc2aedc.dip0.t-ipconnect.de) (Quit: leaving)
2026-06-01 08:31:06 +0000danza(~danza@user/danza) danza
2026-06-01 08:34:46 +0000danz84949(~danza@user/danza) danza
2026-06-01 08:35:11 +0000danza(~danza@user/danza) (Read error: Connection reset by peer)
2026-06-01 08:44:41 +0000divlamir(~divlamir@user/divlamir) (Read error: Connection reset by peer)
2026-06-01 08:44:57 +0000divlamir(~divlamir@user/divlamir) divlamir
2026-06-01 08:47:01 +0000acidjnk_new(~acidjnk@p200300d6e700e5447240697420104f78.dip0.t-ipconnect.de)
2026-06-01 08:49:45 +0000acidjnk(~acidjnk@p200300d6e700e5073b062b09158277c9.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2026-06-01 08:50:37 +0000acidjnk_new3(~acidjnk@p200300d6e700e5073b062b09158277c9.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2026-06-01 08:50:39 +0000acidjnk(~acidjnk@p200300d6e700e5447240697420104f78.dip0.t-ipconnect.de) acidjnk
2026-06-01 09:01:44 +0000Googulator31Googulator
2026-06-01 09:07:20 +0000wickedjargon(~user@2605:8d80:5431:c7f3:cb6a:c99b:bed8:74f5) (Ping timeout: 256 seconds)
2026-06-01 09:18:48 +0000CiaoSen(~Jura@2a02:3031:2e2:74df:4e50:ddff:fe9b:8922) CiaoSen
2026-06-01 09:27:20 +0000Enrico63(~Enrico63@host-95-247-196-30.retail.telecomitalia.it) Enrico63
2026-06-01 09:32:55 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-06-01 10:03:23 +0000gentauro(~gentauro@user/gentauro) (Remote host closed the connection)
2026-06-01 10:10:31 +0000vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 262 seconds)
2026-06-01 10:18:17 +0000ninjacato(~Thunderbi@user/ninjacato) ninjacato
2026-06-01 10:21:16 +0000aetepe(~aetepe@188.119.22.175) aetepe
2026-06-01 10:22:35 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-06-01 10:25:35 +0000 <yin> i know some people here teach. where does the resistance to abandon the imperatove paradigm when learning functional programming stem from? i'm getting anxious reading some comments on this post https://www.reddit.com/r/haskellquestions/comments/1tscedu/why_haskell_tutorials_do_not_include_th…
2026-06-01 10:26:53 +0000 <yin> and what are efdective ways to convey the right message?
2026-06-01 10:26:58 +0000 <jaror> I don't teach, but I think it is because we still have escape hatches like IO.
2026-06-01 10:27:35 +0000 <jaror> Haskell is essentially a multi-paradigm language, you can use it to do imperative programming without too much effort.
2026-06-01 10:27:57 +0000 <jaror> And from the outside that seems like what most people in industry are doing.
2026-06-01 10:27:57 +0000 <[exa]> yin: I wouldn't say there's resistance, it's more of a momentum
2026-06-01 10:28:51 +0000 <[exa]> yin: turns out there isn't much of that effect if students start with more functional approaches (SICP-ish)
2026-06-01 10:31:40 +0000 <[exa]> yin: btw I'm doing this on 2nd or 3rd lecture (depending on how much blabla I glue to typeclasses)
2026-06-01 10:32:06 +0000 <[exa]> essentially "okay so we have IO, how do we encode pascal into it"
2026-06-01 10:32:50 +0000 <yin> i remember IO taking me a while to understand correctly
2026-06-01 10:34:02 +0000 <[exa]> yeah the main didactic issue is that there's 2 kinda hidden layers (1 realworld and 1 monad abstraction) and that doesn't really help it to click faster
2026-06-01 10:35:47 +0000 <newmind> dealing with just IO is fine, especially with the syntactic sugar of the do syntax. where it really starts to trip people up is when you start working with more than one monad
2026-06-01 10:36:18 +0000 <[exa]> so I'm now taking monads from one direction first (with the andThen approach with Maybes and Lists) then IO from the EDSL direction (hey look we have some magic monad instances that make stuff work like imperative!), then we derive State, and then IO is "trivial" (hey look State RealWorld, takes quite some memory right? padmeface)
2026-06-01 10:36:31 +0000 <tomsmeding> "you can do imperative programming without too much effort" -- yes, but no: the syntax is much more verbose than you'd have in C, and you have the two-layer system that [exa] mentions
2026-06-01 10:37:41 +0000rscastilho2024_(rscastilho@user/rscastilho2024-:23901) rscastilho2024_
2026-06-01 10:38:06 +0000 <tomsmeding> I think the top comment on that reddit post is actually spot-on: "If you want to write C code, use C, not Haskell": learning functional programming is more learning a new programming paradigm than learning a new language
2026-06-01 10:38:24 +0000 <tomsmeding> if you learn Haskell by writing very imperative code in Haskell, you might be learning the language, but you're not learning the paradigm
2026-06-01 10:38:47 +0000 <tomsmeding> and 1. that will make you dislike the language because it doesn't seem to bring you much over the languages you already know, and 2. you're kinda missing the point
2026-06-01 10:39:21 +0000 <tomsmeding> and resistance to learning a new paradigm is, I suspect, nothing more than resistance to learning a new way of doing something if you already know how to do it otherwise
2026-06-01 10:39:40 +0000rscastilho2024_(rscastilho@user/rscastilho2024-:23901) (Remote host closed the connection)
2026-06-01 10:40:01 +0000 <tomsmeding> ("why do I have to learn cmake? make works fine")
2026-06-01 10:40:02 +0000 <newmind> i think that's the reason why haskell (or functional programming in general) seems a bit harder if you're already profficient in other paradigms: you _know_ how to solve this problem, yet you're stumped that "the language" isn't letting you
2026-06-01 10:40:20 +0000 <tomsmeding> yes
2026-06-01 10:40:44 +0000 <tomsmeding> even though the language technically can let you, but we're not teaching you that part of the language quite yet so that you learn how to solve it the other way
2026-06-01 10:40:47 +0000 <newmind> although it helps a lot that a lot of functional patterns (map/filter, iterators) are creeping into mainstream languages
2026-06-01 10:42:03 +0000 <newmind> yeah, you can go full IO and IORefs and basically code C in haskell too.. the question is just: why would you?
2026-06-01 10:42:22 +0000 <tomsmeding> yin: just read the comments by hanshuttel there in that reddit thread, there's your answer :p
2026-06-01 10:43:08 +0000 <tomsmeding> oh, hm, no it's the OP that should read those comments, not you, I guess -- sorry
2026-06-01 10:48:02 +0000 <[exa]> oh, the early internet fairy tales and their OPs who read comments
2026-06-01 10:48:51 +0000 <danz84949> reddit keeps those tales alive
2026-06-01 10:49:57 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 272 seconds)
2026-06-01 10:50:15 +0000vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 258 seconds)
2026-06-01 10:54:05 +0000danz84949(~danza@user/danza) (Remote host closed the connection)
2026-06-01 10:59:06 +0000ninjacato(~Thunderbi@user/ninjacato) (Remote host closed the connection)
2026-06-01 10:59:55 +0000 <yin> OP is reading and answering comments
2026-06-01 11:00:54 +0000ninjacato(~Thunderbi@user/ninjacato) ninjacato
2026-06-01 11:03:36 +0000takuan(~takuan@d8D86B9E9.access.telenet.be) (Ping timeout: 265 seconds)
2026-06-01 11:10:17 +0000kuribas(~user@188.118.57.242)
2026-06-01 11:10:26 +0000takuan(~takuan@d8D86B9E9.access.telenet.be)
2026-06-01 11:11:15 +0000 <merijn> tomsmeding: I don't think the cmake vs make distinction is a good metaphor :p
2026-06-01 11:11:36 +0000 <merijn> tomsmeding: Because you *should* pick Haskell over C, but you shouldn't pick cmake over make :p
2026-06-01 11:13:00 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2026-06-01 11:15:01 +0000 <[exa]> yeah the directionality there is dangerous :D
2026-06-01 11:21:29 +0000 <kuribas> If find C and haskell don't have much overlap.
2026-06-01 11:21:40 +0000 <kuribas> What you *could* program in haskell, you shouldn't do in C.
2026-06-01 11:21:56 +0000 <kuribas> Haskell and Java or C# has more overlap...
2026-06-01 11:22:57 +0000 <jaror> But C is purely functional: http://conal.net/blog/posts/the-c-language-is-purely-functional
2026-06-01 11:23:00 +0000 <jaror> ;P
2026-06-01 11:23:09 +0000 <kuribas> And C for system libraries or embedded systems would be a bad match for haskell as well.
2026-06-01 11:24:31 +0000 <kuribas> Do people still start programs in C?
2026-06-01 11:25:08 +0000 <kuribas> I thought people use Java or C#. Or (sadly) python or nodejs.
2026-06-01 11:25:49 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 262 seconds)
2026-06-01 11:27:26 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-06-01 11:29:47 +0000weary-traveler(~user@user/user363627) (Remote host closed the connection)
2026-06-01 11:31:15 +0000 <olsner> instead of writing C you could have Haskell code that generates assembly or runs a JIT compiler :)
2026-06-01 11:39:05 +0000haritz(~hrtz@140.228.70.141)
2026-06-01 11:39:05 +0000haritz(~hrtz@140.228.70.141) (Changing host)
2026-06-01 11:39:05 +0000haritz(~hrtz@user/haritz) haritz
2026-06-01 11:44:40 +0000 <jaror> Generating code with Haskell is the wrong idea IMO, instead you should find a subset of Haskell which you can compile efficiently. After all, Haskell is just a glorified lambda calculus.
2026-06-01 11:46:27 +0000fp1(~Thunderbi@130.233.70.60) (Quit: fp1)
2026-06-01 11:50:35 +0000weary-traveler(~user@user/user363627) user363627
2026-06-01 11:51:59 +0000fp1(~Thunderbi@130.233.70.60) fp
2026-06-01 11:55:12 +0000 <kuribas> Or use rust instead?
2026-06-01 12:06:06 +0000Enrico63(~Enrico63@host-95-247-196-30.retail.telecomitalia.it) (Quit: Client closed)
2026-06-01 12:07:17 +0000 <srk> jaror: that's what MicroHs does I think
2026-06-01 12:07:42 +0000srkuses Haskell to generate C for embedded stuff
2026-06-01 12:09:03 +0000tnt1(~Thunderbi@user/tnt1) tnt1
2026-06-01 12:17:09 +0000 <jaror> No MicroHs "compiles" the full Haskell language to combinators
2026-06-01 12:22:00 +0000weary-traveler(~user@user/user363627) (Remote host closed the connection)
2026-06-01 12:22:33 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2026-06-01 12:24:37 +0000weary-traveler(~user@user/user363627) user363627
2026-06-01 12:25:47 +0000FirefoxDeHuk(~FirefoxDe@user/FirefoxDeHuk) FirefoxDeHuk
2026-06-01 12:29:42 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2026-06-01 12:36:57 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
2026-06-01 12:40:08 +0000tjbc(~tjbc@user/fliife) (Ping timeout: 261 seconds)
2026-06-01 12:40:45 +0000Ranhir(~Ranhir@157.97.53.139) Ranhir
2026-06-01 12:41:00 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-06-01 12:46:29 +0000fp1(~Thunderbi@130.233.70.60) (Ping timeout: 272 seconds)
2026-06-01 12:49:49 +0000tjbc(~tjbc@user/fliife) fliife
2026-06-01 12:49:54 +0000comerijn(~merijn@77.242.116.146) merijn
2026-06-01 12:52:52 +0000merijn(~merijn@77.242.116.146) (Ping timeout: 256 seconds)
2026-06-01 12:55:36 +0000xff0x(~xff0x@2405:6580:b080:900:2c0a:90ca:8489:d22b)
2026-06-01 12:57:31 +0000Square3(~Square4@user/square) (Remote host closed the connection)
2026-06-01 12:58:11 +0000Square3(~Square4@user/square) Square
2026-06-01 13:12:02 +0000FirefoxDeHuk(~FirefoxDe@user/FirefoxDeHuk) (Quit: Client closed)
2026-06-01 13:15:20 +0000Enrico63(~Enrico63@host-95-247-196-30.retail.telecomitalia.it) Enrico63
2026-06-01 13:28:25 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
2026-06-01 13:28:42 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-06-01 13:35:21 +0000 <mesaoptimizer> I guess we could rewrite GHC or MicroHs in Rust
2026-06-01 13:35:53 +0000 <mesaoptimizer> or just the minimum needed bit to bootstrap from
2026-06-01 13:38:15 +0000 <jaror> Rewriting the compiler in another language doesn't change the performance of the programs it produces
2026-06-01 13:38:44 +0000 <[exa]> mesaoptimizer: not sure if rust complexity isn't a bit bigger than of haskell
2026-06-01 13:38:53 +0000 <[exa]> i.e. the bootstrap direction might not make sense
2026-06-01 13:43:11 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-01 13:43:30 +0000CiaoSen(~Jura@2a02:3031:2e2:74df:4e50:ddff:fe9b:8922) (Ping timeout: 245 seconds)
2026-06-01 13:44:45 +0000 <srk> jaror: oO, interesting, looking at eval.c .. not so :D cool that's something like that is possible
2026-06-01 13:45:51 +0000Enrico63(~Enrico63@host-95-247-196-30.retail.telecomitalia.it) (Quit: Client closed)
2026-06-01 13:46:25 +0000 <jaror> That's how the early lazy languages worked, e.g. miranda
2026-06-01 13:47:30 +0000srkreads mhs paper
2026-06-01 13:48:14 +0000Square3(~Square4@user/square) (Ping timeout: 245 seconds)
2026-06-01 13:53:49 +0000 <[exa]> jaror: ah btw that reminds me of this thing: https://github.com/taolson/Admiran
2026-06-01 13:53:57 +0000target_i(~target_i@user/target-i/x-6023099) target_i
2026-06-01 13:54:29 +0000 <[exa]> (the stats say 99% assembly but that's just the bootstrap blob)
2026-06-01 13:56:15 +0000 <jaror> impressive
2026-06-01 13:56:22 +0000 <jaror> > 20x to 50x faster than the original Miranda compiler/combinator interpreter
2026-06-01 13:56:23 +0000 <lambdabot> Variable not in scope: fasterVariable not in scope: thanVariable not in scop...
2026-06-01 13:56:32 +0000 <mesaoptimizer> hah
2026-06-01 13:56:33 +0000 <jaror> Yeah that's the reason we stopped compiling to combinators
2026-06-01 13:56:50 +0000 <jaror> Ah, I'm too used to markdown syntax
2026-06-01 13:56:54 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 256 seconds)
2026-06-01 13:57:14 +0000 <mesaoptimizer> that reminds me, how practical is Conal Elliot's "compiling to categories", if compiling to combinators is impractical as you put it
2026-06-01 13:57:33 +0000 <jaror> Compiling to categories is just a completely different thing
2026-06-01 13:57:37 +0000 <jaror> You don't run categories
2026-06-01 13:58:12 +0000 <jaror> I guess you could implement the interfaces using assembly and then run the result
2026-06-01 13:59:43 +0000 <jaror> I think tomsmeding once told me how that is inefficient (we were discussing the automatic differentiation work by Conal Elliott, but I think the approach was similar)
2026-06-01 14:00:54 +0000 <jaror> As far as I know compiling to categories also means you must eliminate variables in some way
2026-06-01 14:01:08 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-01 14:01:17 +0000 <jaror> and I think much more thought has been put into making SKI-based combinators fast than making the compiling to categories translation fast
2026-06-01 14:01:55 +0000 <jaror> (or not so much the translation itself but the programs it produces)
2026-06-01 14:02:37 +0000 <jaror> Still, I don't think performance was one of Conal Elliotts goals
2026-06-01 14:26:37 +0000CiaoSen(~Jura@2a02:3031:2e2:74df:4e50:ddff:fe9b:8922) CiaoSen
2026-06-01 14:35:38 +0000CiaoSen(~Jura@2a02:3031:2e2:74df:4e50:ddff:fe9b:8922) (Ping timeout: 268 seconds)
2026-06-01 14:41:45 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 272 seconds)
2026-06-01 14:44:25 +0000dolio(~dolio@130.44.140.168) (Quit: ZNC 1.10.1 - https://znc.in)
2026-06-01 14:47:05 +0000dolio(~dolio@130.44.140.168) dolio
2026-06-01 14:51:35 +0000rainbyte(~rainbyte@181.47.219.31) rainbyte
2026-06-01 15:05:30 +0000pavonia(~user@user/siracusa) (Quit: Bye!)
2026-06-01 15:09:28 +0000Pozyomka(~pyon@user/pyon) (Quit: brb)
2026-06-01 15:10:35 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
2026-06-01 15:23:15 +0000aka_dude(~aka_dude@192.71.166.120) (Quit: Gateway shutdown)
2026-06-01 15:24:06 +0000gorignak(~gorignak@user/gorignak) gorignak
2026-06-01 15:27:20 +0000aka_dude(~aka_dude@192.71.166.120)
2026-06-01 15:28:04 +0000wickedjargon(~user@24.244.23.59) wickedjargon
2026-06-01 15:28:57 +0000aka_dude(~aka_dude@192.71.166.120) (Client Quit)
2026-06-01 15:29:05 +0000emilym(~Thunderbi@user/emilym) emilym
2026-06-01 15:29:49 +0000aka_dude(~aka_dude@192.71.166.120)
2026-06-01 15:32:16 +0000Pozyomka(~pyon@user/pyon) pyon
2026-06-01 15:33:14 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 245 seconds)
2026-06-01 15:33:36 +0000wickedja`(~user@2605:8d80:5431:ba1b:d500:5146:99ed:97f2)
2026-06-01 15:34:43 +0000wickedjargon(~user@24.244.23.59) (Ping timeout: 251 seconds)
2026-06-01 15:44:23 +0000synchromesh(~john@2406:5a00:247e:1500:6c73:518b:be6f:ed81) (Read error: Connection reset by peer)
2026-06-01 15:45:56 +0000synchromesh(~john@2406:5a00:247e:1500:29c5:b42c:d970:297d) synchromesh
2026-06-01 15:49:17 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:9225:8669:d161:f359)
2026-06-01 15:54:20 +0000wickedja`(~user@2605:8d80:5431:ba1b:d500:5146:99ed:97f2) (Ping timeout: 245 seconds)
2026-06-01 16:17:23 +0000comerijn(~merijn@77.242.116.146) (Ping timeout: 272 seconds)
2026-06-01 16:18:52 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-06-01 16:20:08 +0000Pozyomka(~pyon@user/pyon) (Quit: brb)
2026-06-01 16:20:45 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:9225:8669:d161:f359) (Quit: ricardomaps)
2026-06-01 16:21:45 +0000Pozyomka(~pyon@user/pyon) pyon
2026-06-01 16:22:08 +0000kuribas(~user@188.118.57.242) (Remote host closed the connection)
2026-06-01 16:27:28 +0000Pozyomka(~pyon@user/pyon) (Quit: brb)
2026-06-01 16:31:13 +0000foul_owl(~kerry@94.156.149.95) (Ping timeout: 243 seconds)
2026-06-01 16:36:15 +0000Pozyomka(~pyon@user/pyon) pyon
2026-06-01 16:41:50 +0000euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2026-06-01 16:42:56 +0000Pozyomka(~pyon@user/pyon) (Quit: brb)
2026-06-01 16:44:26 +0000Pozyomka(~pyon@user/pyon) pyon
2026-06-01 16:52:24 +0000euphores(~SASL_euph@user/euphores) euphores
2026-06-01 16:56:47 +0000tnt1(~Thunderbi@user/tnt1) (Remote host closed the connection)
2026-06-01 17:06:12 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 17:09:59 +0000marinelli(~weechat@gateway/tor-sasl/marinelli) (Remote host closed the connection)
2026-06-01 17:10:20 +0000marinelli(~weechat@gateway/tor-sasl/marinelli) marinelli
2026-06-01 17:10:50 +0000Pozyomka(~pyon@user/pyon) (Quit: brb)
2026-06-01 17:11:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-01 17:12:35 +0000Pozyomka(~pyon@user/pyon) pyon
2026-06-01 17:18:49 +0000vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 272 seconds)
2026-06-01 17:22:00 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 17:26:54 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-06-01 17:28:59 +0000 <yin> performance is never an easy goal with haskell
2026-06-01 17:34:57 +0000 <sm> I think that's a bit too strong
2026-06-01 17:35:23 +0000 <sm> many haskell programs run "fast" by default, compared to some other languages
2026-06-01 17:35:39 +0000ft(~ft@p4fc2aedc.dip0.t-ipconnect.de) ft
2026-06-01 17:35:58 +0000 <sm> you meant reliably optimal performance, maybe
2026-06-01 17:36:16 +0000wickedjargon(~user@207.194.126.30) wickedjargon
2026-06-01 17:36:57 +0000wickedjargon(~user@207.194.126.30) (Remote host closed the connection)
2026-06-01 17:37:22 +0000wickedjargon(~user@207.194.126.30) wickedjargon
2026-06-01 17:37:50 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 17:38:09 +0000 <newmind> i think with haskell predictability of performance is more of a problem than in the absolute. it's not always straightforward as in, say, C
2026-06-01 17:41:01 +0000tnt1(~Thunderbi@user/tnt1) tnt1
2026-06-01 17:41:19 +0000Guest86(~Guest86@109-81-172-14.rct.o2.cz)
2026-06-01 17:42:39 +0000Guest86(~Guest86@109-81-172-14.rct.o2.cz) (Client Quit)
2026-06-01 17:44:33 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-06-01 17:46:21 +0000Square2(~Square@user/square) Square
2026-06-01 17:48:36 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com) lisbeths
2026-06-01 17:52:44 +0000chele(~chele@user/chele) (Remote host closed the connection)
2026-06-01 17:55:49 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 17:56:09 +0000Raito_Bezarius(~Raito@libera/contributor/wireguard.tunneler.raito-bezarius) (Ping timeout: 245 seconds)
2026-06-01 17:58:43 +0000tnt1(~Thunderbi@user/tnt1) (Ping timeout: 272 seconds)
2026-06-01 18:00:50 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-06-01 18:01:18 +0000tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2026-06-01 18:11:36 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 18:12:07 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-06-01 18:14:39 +0000divlamir_(~divlamir@user/divlamir) divlamir
2026-06-01 18:17:33 +0000divlamir(~divlamir@user/divlamir) (Ping timeout: 263 seconds)
2026-06-01 18:17:33 +0000divlamir_divlamir
2026-06-01 18:18:56 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-06-01 18:28:45 +0000 <tomsmeding> jaror: the thing I may have told you at some point is that to do Conal's fancy stuff on combinators you have to translate your pointful program to combinators first, and that translation introduces inefficiencies
2026-06-01 18:28:57 +0000 <tomsmeding> e.g. don't expect your variable references to be constant-time any more
2026-06-01 18:29:45 +0000 <tomsmeding> concretely, the idea of a local binding in combinators is pairing up an additional value with your input; that means that accessing your original input now takes one additional projection
2026-06-01 18:29:53 +0000 <tomsmeding> nest this and variable reference becomes O(|Γ|)
2026-06-01 18:29:59 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 18:30:19 +0000 <tomsmeding> you can of course improve this to O(log |Γ|) with a tree structure, but then you have to construct that tree, etc.
2026-06-01 18:30:43 +0000 <tomsmeding> there may be formulations of the categorical combinators that address these relatively stupid issues
2026-06-01 18:31:06 +0000 <tomsmeding> merijn: re "you should pick haskell over C": perhaps over C, but you should definitely not pick haskell over every other imperative language
2026-06-01 18:31:36 +0000 <tomsmeding> there is plenty of code that is simultaneously awkward to express in haskell _and_ slow, and using a proper imperative language addresses both
2026-06-01 18:32:29 +0000 <tomsmeding> essentially anything that requires a mutable array fast becomes annoying in haskell, and you don't even get SIMD vectorisation
2026-06-01 18:34:54 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-01 18:44:47 +0000divlamir_(~divlamir@user/divlamir) divlamir
2026-06-01 18:45:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 18:46:49 +0000divlamir(~divlamir@user/divlamir) (Ping timeout: 244 seconds)
2026-06-01 18:46:50 +0000divlamir_divlamir
2026-06-01 18:50:59 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-06-01 18:57:22 +0000wickedjargon(~user@207.194.126.30) (Remote host closed the connection)
2026-06-01 19:01:34 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 19:06:25 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-01 19:08:49 +0000peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 268 seconds)
2026-06-01 19:15:16 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 19:21:50 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-01 19:25:55 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-06-01 19:27:13 +0000wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2026-06-01 19:29:21 +0000Pozyomka(~pyon@user/pyon) (Quit: brb)
2026-06-01 19:31:24 +0000Pozyomka(~pyon@user/pyon) pyon
2026-06-01 19:33:19 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 19:34:43 +0000Pozyomka(~pyon@user/pyon) (Client Quit)
2026-06-01 19:36:13 +0000Adran(~adran@botters/adran) (Quit: Este é o fim.)
2026-06-01 19:37:57 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-06-01 19:38:06 +0000unworriedsafari(unworrieds@user/unworriedsafari) unworriedsafari
2026-06-01 19:41:44 +0000gentauro(~gentauro@user/gentauro) gentauro
2026-06-01 19:43:19 +0000sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2026-06-01 19:46:01 +0000Adran(adran@botters/adran) Adran
2026-06-01 19:48:43 +0000Googulator(~Googulato@193-226-241-87.pool.digikabel.hu) (Quit: Client closed)
2026-06-01 19:49:01 +0000Googulator(~Googulato@193-226-241-87.pool.digikabel.hu)
2026-06-01 19:49:05 +0000merijn(~merijn@62.45.136.136) merijn
2026-06-01 19:52:51 +0000synchromesh(~john@2406:5a00:247e:1500:29c5:b42c:d970:297d) (Read error: Connection reset by peer)
2026-06-01 19:53:17 +0000synchromesh(~john@2406:5a00:247e:1500:29c5:b42c:d970:297d) synchromesh
2026-06-01 19:53:25 +0000aetepe(~aetepe@188.119.22.175) (Remote host closed the connection)
2026-06-01 19:54:06 +0000merijn(~merijn@62.45.136.136) (Ping timeout: 252 seconds)
2026-06-01 19:55:44 +0000finnyben(~zero@user/zero)
2026-06-01 19:56:49 +0000 <yin> i agree
2026-06-01 19:57:07 +0000 <yin> that was what i meant
2026-06-01 19:57:43 +0000 <finnyben> will programs written in this style run efficiently in haskell? https://www.reddit.com/r/haskellquestions/comments/1tscedu/comment/oox6gm9/?utm_source=share&utm_m…
2026-06-01 20:01:10 +0000netunreach(~user@user/netunreach) netunreach
2026-06-01 20:01:53 +0000Googulator(~Googulato@193-226-241-87.pool.digikabel.hu) (Quit: Client closed)
2026-06-01 20:02:07 +0000Googulator(~Googulato@193-226-241-87.pool.digikabel.hu)
2026-06-01 20:02:07 +0000azazazz(~zero@a89-153-63-117.cpe.netcabo.pt)
2026-06-01 20:03:36 +0000 <tomsmeding> > I'd be very happy if it were taught to beginner Haskellers who want to learn Haskell as opposed to learning functional programming
2026-06-01 20:03:44 +0000 <tomsmeding> Sure. But then, why are you learning Haskell precisely?
2026-06-01 20:04:37 +0000 <tomsmeding> finnyben: decently efficiently. Most of the time there is spent on actually printing stuff; IO is relatively expensive in any language.
2026-06-01 20:04:52 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-01 20:05:43 +0000 <tomsmeding> If you'd want to pump that "5" up to a million or so and want it to generate the megabytes of text very quickly, you either need to reimplement in terms of more low-level operations or use another language
2026-06-01 20:06:19 +0000 <tomsmeding> (but then, while C++'s std::cout might be a little faster, generating gigabytes of text using std::cout is also not a particularly good idea)
2026-06-01 20:07:21 +0000 <unworriedsafari> Hi, I'm exploring the effectful library but I'm having some trouble with the notation. Particularly the use of single colon in a type signature. What does it mean? For example: https://github.com/bcardiff/lambda-library/blob/main/app-effectful/Main.hs#L46
2026-06-01 20:07:40 +0000michalz(~michalz@185.246.207.221) (Remote host closed the connection)
2026-06-01 20:08:10 +0000 <jaror> The :> basically means "is a part of"
2026-06-01 20:08:17 +0000 <jaror> In this case
2026-06-01 20:08:35 +0000 <jaror> But it is a custom type level operator that is defined by the effectful library, it is not built-in
2026-06-01 20:09:06 +0000 <jaror> Oh, but just the `:` is actually just a list constructor
2026-06-01 20:09:17 +0000 <unworriedsafari> I see, so it's a type-level operator. Same for the colon in (ReadonlyBooksDB : es) I suppose
2026-06-01 20:09:20 +0000 <unworriedsafari> oh
2026-06-01 20:09:31 +0000 <tomsmeding> it's a list of effects :)
2026-06-01 20:09:53 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 258 seconds)
2026-06-01 20:10:24 +0000 <tomsmeding> the 'es' parameter is the list of available effects; 'IOE :> es' is a constraint requiring that IOE is an element of that list, and the usage of ':' means that the argument will run with one additional effect available (namely, ReadOnlyBookDB)
2026-06-01 20:11:09 +0000netunreach(~user@user/netunreach) (Ping timeout: 252 seconds)
2026-06-01 20:11:17 +0000 <tomsmeding> "given a BookDB and any computation that uses the ReadOnlyBookDB effect at the front of its effect list, I can handle that effect completely as long as I have the IOE effect available"
2026-06-01 20:12:00 +0000 <unworriedsafari> I see
2026-06-01 20:13:17 +0000 <tomsmeding> there is documentation here on the promotion of data types to the type level, but it's written with the assumption that the reader already knows a lot of haskell https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/data_kinds.html#extension-DataKinds
2026-06-01 20:15:00 +0000 <unworriedsafari> Thanks :) This clears it up. I'm not too familiar with seeing this at the type level. So that link seems informative as well.
2026-06-01 20:17:32 +0000netunreach(~user@user/netunreach) netunreach