2026/05/23

2026-05-23 00:00:49 +0000vetkat(~vetkat@user/vetkat) (Quit: So long, and thanks for all the fish)
2026-05-23 00:01:51 +0000vetkat(~vetkat@user/vetkat) vetkat
2026-05-23 00:03:26 +0000merijn(~merijn@62.45.136.136) merijn
2026-05-23 00:08:33 +0000merijn(~merijn@62.45.136.136) (Ping timeout: 250 seconds)
2026-05-23 00:19:13 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 00:23:40 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-05-23 00:33:29 +0000DetourNe-(~DetourNet@user/DetourNetworkUK) DetourNetworkUK
2026-05-23 00:33:43 +0000DetourNetworkUK(~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer)
2026-05-23 00:34:51 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 00:35:43 +0000DetourNe-DetourNetworkUK
2026-05-23 00:40:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2026-05-23 00:41:43 +0000peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-05-23 00:45:06 +0000myxos(~myxos@67-1-178-42.tcso.qwest.net) (Ping timeout: 248 seconds)
2026-05-23 00:50:21 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 00:55:28 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-05-23 01:05:32 +0000peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 240 seconds)
2026-05-23 01:06:08 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 01:06:17 +0000myxos(~myxos@67-1-178-42.tcso.qwest.net) myxokephale
2026-05-23 01:08:36 +0000troojg(~troojg@user/troojg) troojg
2026-05-23 01:10:32 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-05-23 01:16:53 +0000foul_owl(~kerry@94.156.149.96) (Ping timeout: 272 seconds)
2026-05-23 01:17:47 +0000ncf(~ncf@monade.li) (Remote host closed the connection)
2026-05-23 01:21:32 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 01:27:03 +0000ncf(~ncf@monade.li) ncf
2026-05-23 01:28:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-05-23 01:39:36 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 01:44:46 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-05-23 01:52:24 +0000acidjnk_new3(~acidjnk@p200300d6e700e508282254f1e55c94a7.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2026-05-23 01:53:00 +0000ncf(~ncf@monade.li) (Remote host closed the connection)
2026-05-23 01:54:13 +0000ncf(~ncf@monade.li) ncf
2026-05-23 01:55:23 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 02:00:17 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-05-23 02:11:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 02:12:57 +0000tremon(~tremon@83.80.159.219) tremon
2026-05-23 02:16:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-23 02:26:57 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 02:27:35 +0000puke(~puke@014136001187.ctinets.com) (*.net *.split)
2026-05-23 02:27:58 +0000puke(~puke@014136001187.ctinets.com)
2026-05-23 02:32:16 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 251 seconds)
2026-05-23 02:35:15 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:a057:893f:21d0:8f42)
2026-05-23 02:36:39 +0000Eoco(~ian@128.101.131.218) Eoco
2026-05-23 02:38:02 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 02:42:55 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-05-23 02:48:34 +0000xff0x(~xff0x@ai070051.d.east.v6connect.net) (Ping timeout: 265 seconds)
2026-05-23 02:51:19 +0000Inline(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
2026-05-23 02:53:36 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 02:54:20 +0000rainbyte(~rainbyte@181.47.219.3) (Quit: rainbyte)
2026-05-23 02:55:15 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:a057:893f:21d0:8f42) (Quit: ricardomaps)
2026-05-23 02:55:37 +0000xff0x(~xff0x@2405:6580:b080:900:31a:40c3:3c58:e32)
2026-05-23 02:58:03 +0000rainbyte(~rainbyte@181.47.219.3) rainbyte
2026-05-23 02:58:48 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 263 seconds)
2026-05-23 03:02:21 +0000emilym(~Thunderbi@user/emilym) emilym
2026-05-23 03:04:14 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-05-23 03:06:34 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 245 seconds)
2026-05-23 03:09:22 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 03:10:06 +0000myxos(~myxos@67-1-178-42.tcso.qwest.net) (Ping timeout: 256 seconds)
2026-05-23 03:16:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-05-23 03:19:37 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 252 seconds)
2026-05-23 03:24:42 +0000m(~travltux@user/travltux) (Quit: WeeChat 4.7.2)
2026-05-23 03:27:08 +0000m(~travltux@user/travltux) travltux
2026-05-23 03:27:32 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 03:32:15 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-05-23 03:51:43 +0000myxos(~myxos@67-1-178-42.tcso.qwest.net) myxokephale
2026-05-23 04:03:25 +0000machinedgod(~machinedg@d172-219-48-230.abhsia.telus.net) (Remote host closed the connection)
2026-05-23 04:04:34 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-05-23 04:04:45 +0000machinedgod(~machinedg@172.219.48.230) machinedgod
2026-05-23 04:04:51 +0000machinedgod(~machinedg@172.219.48.230) (Client Quit)
2026-05-23 04:06:33 +0000troojg(~troojg@user/troojg) (Ping timeout: 248 seconds)
2026-05-23 04:15:22 +0000spew(~spew@user/spew) (Quit: nyaa~)
2026-05-23 04:25:32 +0000Jacqueline__(uid751191@id-751191.helmsley.irccloud.com)
2026-05-23 04:38:53 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 04:43:47 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-05-23 04:54:37 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 04:59:43 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-05-23 05:02:43 +0000takuan(~takuan@d8D86B9E9.access.telenet.be)
2026-05-23 05:10:26 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 05:15:30 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-05-23 05:24:56 +0000euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2026-05-23 05:26:13 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 05:29:25 +0000dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 276 seconds)
2026-05-23 05:31:12 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-05-23 05:38:54 +0000euphores(~SASL_euph@user/euphores) euphores
2026-05-23 05:38:59 +0000dibblego(~dibblego@116.255.1.119)
2026-05-23 05:38:59 +0000dibblego(~dibblego@116.255.1.119) (Changing host)
2026-05-23 05:38:59 +0000dibblego(~dibblego@haskell/developer/dibblego) dibblego
2026-05-23 05:39:54 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 05:43:48 +0000dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 253 seconds)
2026-05-23 05:44:54 +0000tnt1(~Thunderbi@user/tnt1) tnt1
2026-05-23 05:46:49 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-05-23 05:47:40 +0000dibblego(~dibblego@116.255.1.119)
2026-05-23 05:47:40 +0000dibblego(~dibblego@116.255.1.119) (Changing host)
2026-05-23 05:47:40 +0000dibblego(~dibblego@haskell/developer/dibblego) dibblego
2026-05-23 05:49:04 +0000tnt1(~Thunderbi@user/tnt1) (Ping timeout: 245 seconds)
2026-05-23 05:51:35 +0000tnt1(~Thunderbi@user/tnt1) tnt1
2026-05-23 05:53:25 +0000haritz(~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
2026-05-23 05:57:57 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 06:03:19 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-05-23 06:13:24 +0000dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 263 seconds)
2026-05-23 06:13:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 06:15:20 +0000dibblego(~dibblego@116-255-1-119.ip4.superloop.au)
2026-05-23 06:15:21 +0000dibblego(~dibblego@116-255-1-119.ip4.superloop.au) (Changing host)
2026-05-23 06:15:21 +0000dibblego(~dibblego@haskell/developer/dibblego) dibblego
2026-05-23 06:18:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-05-23 06:29:07 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 06:34:11 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2026-05-23 06:40:53 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 06:44:36 +0000metabulation(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2026-05-23 06:45:18 +0000Jacqueline__(uid751191@id-751191.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2026-05-23 06:46:00 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 253 seconds)
2026-05-23 06:55:07 +0000ss4(~wootehfoo@user/wootehfoot) wootehfoot
2026-05-23 06:56:43 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 07:01:27 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-23 07:12:29 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 07:12:58 +0000Inline(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) Inline
2026-05-23 07:17:17 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 253 seconds)
2026-05-23 07:20:07 +0000tnt1(~Thunderbi@user/tnt1) (Ping timeout: 264 seconds)
2026-05-23 07:22:56 +0000Googulator(~Googulato@84-236-52-41.pool.digikabel.hu) (Quit: Client closed)
2026-05-23 07:23:09 +0000Googulator(~Googulato@84-236-52-41.pool.digikabel.hu)
2026-05-23 07:27:44 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...)
2026-05-23 07:28:22 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 07:30:08 +0000poscat0x04(~poscat@user/poscat) (Remote host closed the connection)
2026-05-23 07:33:04 +0000poscat(~poscat@user/poscat) poscat
2026-05-23 07:35:14 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-05-23 07:40:22 +0000enoq(~enoq@2a05:1141:1fd:3b00:5934:e936:8f0a:3520) enoq
2026-05-23 07:41:57 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 07:42:08 +0000 <enoq> been looking at kotlin conf talks and came across a value semantics talk; basically instead of lenses or deeply nested copies, the compiler takes care of that and is faster than writing mutating code by hand
2026-05-23 07:42:15 +0000tnt1(~Thunderbi@user/tnt1) tnt1
2026-05-23 07:42:35 +0000 <enoq> applied optimizations include flattening pointers
2026-05-23 07:43:03 +0000 <enoq> made me think: what if lenses were actually built into the compiler
2026-05-23 07:47:00 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-05-23 07:56:55 +0000tusko(~uwu@user/tusko) (Quit: Lost terminal)
2026-05-23 07:57:44 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 07:58:34 +0000tnt1(~Thunderbi@user/tnt1) (Quit: tnt1)
2026-05-23 07:59:27 +0000tnt1(~Thunderbi@user/tnt1) tnt1
2026-05-23 08:02:44 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-05-23 08:07:11 +0000ss4wootehfoot
2026-05-23 08:14:15 +0000xff0x(~xff0x@2405:6580:b080:900:31a:40c3:3c58:e32) (Ping timeout: 272 seconds)
2026-05-23 08:14:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 08:14:51 +0000xff0x(~xff0x@2405:6580:b080:900:dc8c:f72a:135a:db02)
2026-05-23 08:19:25 +0000tusko(~uwu@user/tusko) tusko
2026-05-23 08:19:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-05-23 08:21:57 +0000enoq(~enoq@2a05:1141:1fd:3b00:5934:e936:8f0a:3520) (Remote host closed the connection)
2026-05-23 08:29:54 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 08:34:47 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-05-23 08:42:57 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 08:44:41 +0000divlamir(~divlamir@user/divlamir) (Read error: Connection reset by peer)
2026-05-23 08:47:54 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-05-23 08:55:29 +0000Googulator(~Googulato@84-236-52-41.pool.digikabel.hu) (Quit: Client closed)
2026-05-23 08:55:44 +0000Googulator(~Googulato@84-236-52-41.pool.digikabel.hu)
2026-05-23 08:55:45 +0000divlamir(~divlamir@user/divlamir) divlamir
2026-05-23 08:58:03 +0000acidjnk_new3(~acidjnk@p200300d6e700e5081bf32954ce73307a.dip0.t-ipconnect.de)
2026-05-23 08:58:44 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 09:00:33 +0000acidjnk_new(~acidjnk@p200300d6e700e570753f3d38cea48d7a.dip0.t-ipconnect.de)
2026-05-23 09:00:44 +0000tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2026-05-23 09:02:56 +0000emilym(~Thunderbi@user/emilym) emilym
2026-05-23 09:03:14 +0000acidjnk_new3(~acidjnk@p200300d6e700e5081bf32954ce73307a.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2026-05-23 09:04:36 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-05-23 09:04:52 +0000jle`(~jle`@2603:8001:3b00:11::1fae) (Quit: WeeChat 4.8.1)
2026-05-23 09:06:59 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 245 seconds)
2026-05-23 09:08:21 +0000jle`(~jle`@23.240.67.73) jle`
2026-05-23 09:26:05 +0000marinelli(~weechat@gateway/tor-sasl/marinelli) (Quit: marinelli)
2026-05-23 09:39:29 +0000marinelli(~weechat@gateway/tor-sasl/marinelli) marinelli
2026-05-23 09:42:28 +0000target_i(~target_i@user/target-i/x-6023099) target_i
2026-05-23 09:43:58 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 09:44:11 +0000karenw(~karenw@user/karenw) karenw
2026-05-23 09:48:39 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-23 09:55:31 +0000 <Rembane> Are the performance properties inherent to the lenses or could it also work to make the building blocks the lenses are made of that are already parts of the compiler have those optimizations?
2026-05-23 09:56:47 +0000 <jaror> I don't think it is specific to lenses. It is just in general in Haskell if you only update a small part of a large datastructure you still have to pay for reallocating the "spine"
2026-05-23 09:58:40 +0000 <jaror> Value semantics avoids this by giving each function a fresh copy of the whole value, so each function gets ownership of all its arguments and can freely mutate them.
2026-05-23 09:59:46 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 10:00:05 +0000 <jaror> This copying has generally been considered too expensive in FP languages. Languages like Koka and Roc did experiment with a form of opportunistic mutation through reference counting.
2026-05-23 10:01:43 +0000DetourNetworkUK(~DetourNet@user/DetourNetworkUK) (Read error: Software caused connection abort)
2026-05-23 10:02:30 +0000DetourNetworkUK(~DetourNet@user/DetourNetworkUK) DetourNetworkUK
2026-05-23 10:04:24 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-05-23 10:04:52 +0000 <Rembane> Got it, this all seems very reasonable.
2026-05-23 10:05:21 +0000 <Rembane> It would be interesting to do some work on opportunistic mutation in Haskell.
2026-05-23 10:07:04 +0000 <Rembane> And since it is an intersting idea people have already done some work on it: https://www.microsoft.com/en-us/research/wp-content/uploads/2023/05/fbip.pdf
2026-05-23 10:09:51 +0000 <jaror> Yeah that seems like a promising approach
2026-05-23 10:15:33 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 10:22:33 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-05-23 10:23:13 +0000 <jaror> I think laziness does make it quite a bit harder though
2026-05-23 10:26:07 +0000 <jaror> Also quite a restriction:
2026-05-23 10:26:08 +0000 <jaror> We enforce this in our calculus by only
2026-05-23 10:26:08 +0000 <jaror> allowing top-level functions (rather than arbitrary closures) as arguments in our fully in-place
2026-05-23 10:26:08 +0000 <jaror> calculus, effectively making it second-order.
2026-05-23 10:27:34 +0000karenw(~karenw@user/karenw) (Quit: Deep into that darkness peering...)
2026-05-23 10:32:57 +0000puke(~puke@014136001187.ctinets.com) (*.net *.split)
2026-05-23 10:33:21 +0000puke(~puke@014136001187.ctinets.com)
2026-05-23 10:33:37 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 10:38:51 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-05-23 10:44:59 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 10:50:04 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 270 seconds)
2026-05-23 10:50:08 +0000 <[exa]> jaror: does the vector-simple have any portability implications/improvements?
2026-05-23 10:50:27 +0000 <jaror> I'm not sure what portability problems there are with vector
2026-05-23 10:51:04 +0000 <jaror> vector-simple does use GHC's primops extensively
2026-05-23 10:51:04 +0000 <[exa]> I mean, not directly (you depend on GHC :D ) but would it be easier to implement the necessary compiler tooling for this in a hypothetical new compiler or so?
2026-05-23 10:51:59 +0000 <jaror> Yes I think it would be easier to adapt to other compilers
2026-05-23 10:52:07 +0000 <[exa]> anyway the package looks Ok to me, I'd recommend switching to completely 3rd-person narrative in the readme ("theirs" and "ours" vs "vector" and "vector-simple")
2026-05-23 10:52:36 +0000 <jaror> vector relies a lot of GHC's optimizations in addition to just the primops they use
2026-05-23 10:52:55 +0000 <jaror> s/a lot of/a lot on/
2026-05-23 10:53:49 +0000 <[exa]> also would be great if you could provide exact numbers on overhead (there's like 2+n words estimate written down now, would be great to have exact numbers in hand together with what actual `vector` overhead looks like)
2026-05-23 10:54:19 +0000 <jaror> 2+n should be exact
2026-05-23 10:54:36 +0000 <[exa]> "much faster to build from scratch" -- you mean rewrite by hand, or build with ghc?
2026-05-23 10:55:11 +0000 <[exa]> (btw apologies for a bit of reviewer mood here ^ :D it's good, there's just always so many tiny things to clarify)
2026-05-23 10:55:13 +0000 <jaror> build with ghc, perhaps "compile if not cached" is a better description
2026-05-23 10:55:35 +0000 <jaror> Yeah, I appreciate the feedback
2026-05-23 10:55:37 +0000 <[exa]> ah yes then write "compile" and perhaps point to lack of dependencies
2026-05-23 10:56:39 +0000 <[exa]> btw as far as I get it the main use-case for users is for programs that have lots of tiny vectors, right? I'd throw that into the main description.
2026-05-23 10:58:26 +0000 <jaror> I don't think that's specifically the main use case. I think this will be my go-to package for anything but the case where I need large mutable arrays.
2026-05-23 10:59:07 +0000 <[exa]> Rembane: re "performance properties of lenses" -- I somehow got the feeling that prolens exploited stuff inherent to compilers in a weird way ( (->) is a profunctor that is used there instead of Identity, thus it saves a level of wrapery over the plain (->) that ghc is very good at handling of). Thought it might be relevant to have a look there.
2026-05-23 10:59:09 +0000 <jaror> I now often use lists where I think I really should use vectors/arrays instead, but there is no lightweight simple array/vector package.
2026-05-23 10:59:45 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2026-05-23 10:59:45 +0000 <int-e> Vector has, let me think, a tag, two indices, a length, a size, n indices, ceil(n/1024) extra words (assuming 8 byte words)
2026-05-23 11:00:31 +0000 <jaror> a length and a size?
2026-05-23 11:00:48 +0000 <[exa]> afaik as with reserve() from C
2026-05-23 11:00:56 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 11:01:11 +0000 <int-e> wait, it's worse, isn't it? (Mutable)Array# can't be unpacked, so there's a pointer and another tag?
2026-05-23 11:01:43 +0000 <jaror> It's just:
2026-05-23 11:01:43 +0000 <jaror> data Vector a = Vector {-# UNPACK #-} !Int
2026-05-23 11:01:43 +0000 <jaror> {-# UNPACK #-} !Int
2026-05-23 11:01:43 +0000 <jaror> {-# UNPACK #-} !(Array a)
2026-05-23 11:02:16 +0000 <[exa]> that's the simple vector or the vector vector?
2026-05-23 11:02:34 +0000 <jaror> So two ints for the slicing and an unpacked `Array` which is just the length and the total size for the card table (indeed) and then n + ceil(n/1024)
2026-05-23 11:02:40 +0000 <jaror> that's the normal vector
2026-05-23 11:02:44 +0000 <int-e> Array is data Array a = Array { array#: Array# a } and Array# a has that size and length and elements and a card table
2026-05-23 11:03:03 +0000 <jaror> Oh, won't that be unpacked twice?
2026-05-23 11:03:38 +0000 <jaror> Yeah, I guess
2026-05-23 11:03:47 +0000 <int-e> No, for that it would have to be unpacked into the Array type. And that wouldn't work with the GC which treats Array# (= a frozen mutable array) specially.
2026-05-23 11:04:14 +0000 <jaror> You can unpack Array#, I believe
2026-05-23 11:04:24 +0000 <jaror> GHC is not warning me about it at least
2026-05-23 11:05:08 +0000 <int-e> That just means it doesn't explicitly hate the pragma. I don't think it *can* actually unpack it.
2026-05-23 11:05:17 +0000 <jaror> Oh annoying
2026-05-23 11:05:34 +0000 <jaror> I saw this old note and thought something must have happened by now: https://gitlab.haskell.org/ghc/ghc/-/wikis/unpacking-arrays
2026-05-23 11:05:43 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-05-23 11:08:53 +0000 <jaror> I'm also now realizing that perhaps vector is not the best name since it seems to be more associated with dynamically resizable or at least slice-able arrays
2026-05-23 11:13:37 +0000Square(~Square@user/square) Square
2026-05-23 11:16:33 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 11:17:52 +0000weary-traveler(~user@user/user363627) user363627
2026-05-23 11:21:52 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-05-23 11:24:55 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2026-05-23 11:28:56 +0000 <[exa]> jaror: chunk!
2026-05-23 11:29:19 +0000 <[exa]> the lack of chunky packages is disturbing
2026-05-23 11:30:49 +0000__monty__(~toonn@user/toonn) toonn
2026-05-23 11:31:39 +0000 <jaror> Chunk sounds like it should be part of a larger structure.
2026-05-23 11:31:44 +0000 <int-e> jaror: I guess the right way to check this is to look at the CMM for `data Array = Array !(Array# Int)` and the same with {-# UNPACK #-} added and see that in both cases, the constructors heap representation is the same (one tag, one pointer).
2026-05-23 11:32:21 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 11:32:37 +0000 <int-e> The reason why I was quite sure though is that support for this would have to manifest in the GC, but all the array traversal is tied to the tags for MutableArray#/Array#.
2026-05-23 11:33:28 +0000 <jaror> Yeah, I now also found https://gitlab.haskell.org/ghc/ghc/-/issues/24802 which is about ByteArray# but that's still open too
2026-05-23 11:33:48 +0000 <jaror> I am convinced
2026-05-23 11:36:44 +0000 <int-e> It's interesting that it doesn't warn about using UNPACK on strict unlifted fields, even though it has no effect for those: data X = X {-# UNPACK #-} !Int#
2026-05-23 11:37:07 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-05-23 11:37:38 +0000 <jaror> I think it can have effect on unlifted fields, but of course not on unboxed fields indeed.
2026-05-23 11:37:56 +0000 <jaror> with UnliftedDatatypes I mean
2026-05-23 11:38:02 +0000 <jaror> those should be unpackable
2026-05-23 11:38:39 +0000 <jaror> I think I actually opened an issue that it did warn that I didn't have a ! on an unlifted field
2026-05-23 11:39:06 +0000 <jaror> https://gitlab.haskell.org/ghc/ghc/-/issues/20204
2026-05-23 11:40:49 +0000 <int-e> It's funny that there's no mention of garbage collection in #24802
2026-05-23 11:44:24 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2026-05-23 11:44:52 +0000 <int-e> I guess the narrow case of data Array a = Array (Array# a) could be handled by not introducing a new tag for the constructor. That wouldn't help you if you want to later unpack `Array` into some other constructor.
2026-05-23 11:45:47 +0000 <jaror> With data-elevator, I think you can do newtype Array a = Array (Lazy (Array# a))
2026-05-23 11:46:02 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 11:46:30 +0000 <jaror> And Lazy is also a newtype
2026-05-23 11:47:57 +0000 <int-e> Anyway, just to state this point in isolation: Right now, every variable-sized heap object (really just the various arrays, plus some RTS internal things (captured stack frames, I guess?)) has its own special case in the garbage collection functions. To unpack those into other constructors that would have to be generalized.
2026-05-23 11:48:22 +0000 <jaror> Yes, that makes sense
2026-05-23 11:53:08 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-05-23 12:03:51 +0000emilym(~Thunderbi@user/emilym) emilym
2026-05-23 12:04:02 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 12:08:39 +0000weary-traveler(~user@user/user363627) (Quit: Konversation terminated!)
2026-05-23 12:08:57 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
2026-05-23 12:19:53 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 12:24:31 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-05-23 12:24:42 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-05-23 12:26:58 +0000tnt1(~Thunderbi@user/tnt1) (Quit: tnt1)
2026-05-23 12:27:38 +0000tnt1(~Thunderbi@user/tnt1) tnt1
2026-05-23 12:27:50 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2026-05-23 12:29:36 +0000tnt1(~Thunderbi@user/tnt1) (Client Quit)
2026-05-23 12:30:05 +0000tnt1(~Thunderbi@user/tnt1) tnt1
2026-05-23 12:31:55 +0000tnt1(~Thunderbi@user/tnt1) (Client Quit)
2026-05-23 12:33:25 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-05-23 12:33:26 +0000Digitteknohippie(~user@user/digit) Digit
2026-05-23 12:33:55 +0000Digit(~user@user/digit) (Ping timeout: 272 seconds)
2026-05-23 12:34:46 +0000emilym(~Thunderbi@user/emilym) (Remote host closed the connection)
2026-05-23 12:35:03 +0000emilym(~Thunderbi@user/emilym) emilym
2026-05-23 12:37:41 +0000 <jaror> Maybe I can just define it as data Vector a = V0 | V1 !a | V2 !a !a | Vn (Array# a), then it is always at smaller or equal in size to lists
2026-05-23 12:37:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 12:42:52 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2026-05-23 12:47:28 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 12:49:18 +0000DigitteknohippieDigit
2026-05-23 12:52:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-05-23 13:02:47 +0000merijn(~merijn@62.45.136.136) merijn
2026-05-23 13:06:20 +0000haritz(~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8)
2026-05-23 13:06:21 +0000haritz(~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8) (Changing host)
2026-05-23 13:06:21 +0000haritz(~hrtz@user/haritz) haritz
2026-05-23 13:06:50 +0000karenw(~karenw@user/karenw) karenw
2026-05-23 13:08:00 +0000merijn(~merijn@62.45.136.136) (Ping timeout: 252 seconds)
2026-05-23 13:08:43 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-05-23 13:18:36 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 13:21:00 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 245 seconds)
2026-05-23 13:23:24 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-05-23 13:34:11 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 13:40:44 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-05-23 13:42:13 +0000nattkyrro(~serenity@user/nattkyrro) nattkyrro
2026-05-23 13:48:00 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 13:53:07 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-05-23 13:58:50 +0000cyclemaniac(~cyclemani@2a02:8071:881:2d20:c1c7:793e:b89b:1589)
2026-05-23 14:03:48 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 14:06:21 +0000synchromesh(~john@2406:5a00:247e:1500:29d7:765d:2d71:9db7) (Read error: Connection reset by peer)
2026-05-23 14:06:57 +0000synchromesh(~john@2406:5a00:247e:1500:bc22:e610:8777:fdc1) synchromesh
2026-05-23 14:08:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 247 seconds)
2026-05-23 14:19:35 +0000merijn(~merijn@62.45.136.136) merijn
2026-05-23 14:21:39 +0000cyclemaniac(~cyclemani@2a02:8071:881:2d20:c1c7:793e:b89b:1589) (Quit: Client closed)
2026-05-23 14:21:51 +0000cyclemaniac(~cyclemani@2a02:8071:881:2d20:c1c7:793e:b89b:1589)
2026-05-23 14:24:27 +0000merijn(~merijn@62.45.136.136) (Ping timeout: 252 seconds)
2026-05-23 14:27:25 +0000hsw(~hsw@112-104-8-95.adsl.dynamic.seed.net.tw) (Remote host closed the connection)
2026-05-23 14:27:43 +0000hsw(~hsw@112-104-8-95.adsl.dynamic.seed.net.tw) hsw
2026-05-23 14:30:04 +0000ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 252 seconds)
2026-05-23 14:31:58 +0000ec(~ec@gateway/tor-sasl/ec) ec
2026-05-23 14:35:22 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 14:35:54 +0000weary-traveler(~user@user/user363627) user363627
2026-05-23 14:37:32 +0000tusko(~uwu@user/tusko) (Remote host closed the connection)
2026-05-23 14:37:32 +0000chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2026-05-23 14:37:32 +0000ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2026-05-23 14:37:32 +0000califax(~califax@user/califx) (Remote host closed the connection)
2026-05-23 14:37:39 +0000__monty__(~toonn@user/toonn) (Quit: leaving)
2026-05-23 14:37:51 +0000califax(~califax@user/califx) califx
2026-05-23 14:37:53 +0000chexum(~quassel@gateway/tor-sasl/chexum) chexum
2026-05-23 14:38:03 +0000ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2026-05-23 14:38:33 +0000ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2026-05-23 14:38:56 +0000ec(~ec@gateway/tor-sasl/ec) ec
2026-05-23 14:39:50 +0000tusko(~uwu@user/tusko) tusko
2026-05-23 14:40:24 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-05-23 14:43:14 +0000tusko(~uwu@user/tusko) (Read error: Connection reset by peer)
2026-05-23 14:46:32 +0000emmanuelux(~em@user/emmanuelux) (Quit: bye)
2026-05-23 14:48:28 +0000tusko(~uwu@user/tusko) tusko
2026-05-23 14:49:01 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 14:50:23 +0000emmanuelux(~em@user/emmanuelux) emmanuelux
2026-05-23 14:54:02 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-05-23 14:59:05 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
2026-05-23 15:04:17 +0000ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2026-05-23 15:04:42 +0000ec(~ec@gateway/tor-sasl/ec) ec
2026-05-23 15:10:20 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 15:17:08 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-05-23 15:27:37 +0000emmanuelux(~em@user/emmanuelux) (Quit: bye)
2026-05-23 15:31:16 +0000jreicher(~joelr@user/jreicher) jreicher
2026-05-23 15:44:37 +0000tnt1(~Thunderbi@user/tnt1) tnt1
2026-05-23 15:50:01 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 15:51:58 +0000pavonia(~user@user/siracusa) (Quit: Bye!)
2026-05-23 15:55:01 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-05-23 15:59:42 +0000gmg(~user@user/gehmehgeh) (Quit: Leaving)
2026-05-23 16:04:01 +0000gmg(~user@user/gehmehgeh) gehmehgeh
2026-05-23 16:04:13 +0000gmg(~user@user/gehmehgeh) (Client Quit)
2026-05-23 16:05:49 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 16:07:25 +0000chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 252 seconds)
2026-05-23 16:08:03 +0000chexum(~quassel@gateway/tor-sasl/chexum) chexum
2026-05-23 16:10:36 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 263 seconds)
2026-05-23 16:21:17 +0000pfc(~pfc@user/pfc) pfc
2026-05-23 16:21:17 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 16:26:00 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-05-23 16:27:56 +0000rekahsoft(~rekahsoft@70.51.99.119) rekahsoft
2026-05-23 16:28:37 +0000gmg(~user@user/gehmehgeh) gehmehgeh
2026-05-23 16:34:38 +0000Square(~Square@user/square) (Remote host closed the connection)
2026-05-23 16:35:03 +0000Square(~Square@user/square) Square
2026-05-23 16:36:48 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 16:41:43 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-05-23 16:45:47 +0000Jacqueline__(uid751191@id-751191.helmsley.irccloud.com)
2026-05-23 16:47:03 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds)
2026-05-23 16:48:23 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-05-23 16:48:43 +0000ouilemur(~jgmerritt@user/ouilemur) (Quit: WeeChat 4.9.0)
2026-05-23 16:49:38 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 16:50:26 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2026-05-23 16:51:39 +0000Pozyomka_(~pyon@user/pyon) (Quit: brb)
2026-05-23 16:54:19 +0000Square(~Square@user/square) (Ping timeout: 264 seconds)
2026-05-23 16:54:53 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-05-23 17:01:22 +0000tomsmeding(~tomsmedin@user/tomsmeding) (Quit: ZNC 1.10.2 - https://znc.in)
2026-05-23 17:01:40 +0000Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-05-23 17:01:40 +0000Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2026-05-23 17:02:05 +0000tomsmeding(~tomsmedin@user/tomsmeding) tomsmeding
2026-05-23 17:03:20 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-05-23 17:03:23 +0000 <[exa]> traverse_ in Prelude when????//
2026-05-23 17:05:26 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 17:05:39 +0000 <monochrom> Is mapM_ not good enough?
2026-05-23 17:06:05 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2026-05-23 17:10:07 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 252 seconds)
2026-05-23 17:12:16 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 249 seconds)
2026-05-23 17:13:24 +0000Pozyomka(~pyon@user/pyon) pyon
2026-05-23 17:16:37 +0000__monty__(~toonn@user/toonn) toonn
2026-05-23 17:19:44 +0000tnt1(~Thunderbi@user/tnt1) (Quit: tnt1)
2026-05-23 17:20:25 +0000tnt1(~Thunderbi@user/tnt1) tnt1
2026-05-23 17:20:31 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2026-05-23 17:23:27 +0000merijn(~merijn@62.45.136.136) merijn
2026-05-23 17:26:57 +0000bggd(~bgg@2a01:e0a:fd5:f510:4224:8b9e:1684:708d)
2026-05-23 17:26:57 +0000bggd(~bgg@2a01:e0a:fd5:f510:4224:8b9e:1684:708d) (Changing host)
2026-05-23 17:26:57 +0000bggd(~bgg@user/bggd) bggd
2026-05-23 17:28:09 +0000merijn(~merijn@62.45.136.136) (Ping timeout: 252 seconds)
2026-05-23 17:29:24 +0000tusko(~uwu@user/tusko) (Quit: Lost terminal)
2026-05-23 17:33:06 +0000FirefoxDeHuk(~FirefoxDe@user/FirefoxDeHuk) FirefoxDeHuk
2026-05-23 17:33:47 +0000tnt1(~Thunderbi@user/tnt1) (Quit: tnt1)
2026-05-23 17:35:36 +0000FirefoxDeHuk(~FirefoxDe@user/FirefoxDeHuk) (Client Quit)
2026-05-23 17:38:50 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 17:39:00 +0000FirefoxDeHuk(~FirefoxDe@user/FirefoxDeHuk) FirefoxDeHuk
2026-05-23 17:39:36 +0000FirefoxDeHuk(~FirefoxDe@user/FirefoxDeHuk) (Write error: Broken pipe)
2026-05-23 17:41:08 +0000nitrix(~nitrix@user/meow/nitrix) (Ping timeout: 244 seconds)
2026-05-23 17:41:24 +0000tusko(~uwu@user/tusko) tusko
2026-05-23 17:45:45 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2026-05-23 17:47:18 +0000 <davean> monochrom: since when does anyone have a monad?
2026-05-23 17:47:29 +0000 <davean> You must be rich
2026-05-23 17:48:32 +0000 <monochrom> heh
2026-05-23 17:49:03 +0000monochromhas a sugar monad daddy!
2026-05-23 17:50:23 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-05-23 17:51:02 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 17:51:33 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2026-05-23 17:52:38 +0000 <Clint> but what does a sugar monad transformer do
2026-05-23 17:54:10 +0000 <davean> It pays for your gas at every step of doing what it tells you to
2026-05-23 17:56:21 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 273 seconds)
2026-05-23 17:59:39 +0000 <[exa]> monochrom: yeah it's not like I wouldn't had a mapM_ byt everyone keeps telling me to traverse instead of mapM yet here we are with no traverse_
2026-05-23 18:00:27 +0000 <[exa]> bonus points for its very clear occurrence in Data.Travers...oh wait
2026-05-23 18:00:53 +0000tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2026-05-23 18:02:19 +0000 <__monty__> Sell me on traverse.
2026-05-23 18:03:53 +0000 <monochrom> Heh yeah traverse_ does not even need Traversable, only Foldable, so it goes to... Data.Foldable!
2026-05-23 18:04:25 +0000 <davean> "As part of the Digital Library's transition to Open Access" wait, can I stop hatting the ACM maybe finally?
2026-05-23 18:04:43 +0000 <davean> Sorry, I went to pull up a citation for __monty__ and ... now distracted
2026-05-23 18:04:54 +0000 <monochrom> Were it named "foldWithApplicative" you would not be looking for it in Data.Traversable! Names are lies!
2026-05-23 18:05:07 +0000 <monochrom> There are lies, damn lies, and meaningful identifiers.
2026-05-23 18:05:10 +0000 <[exa]> davean: ACM has been kinda improving it lately, they had the free access links since forever and now it's pretty much full open
2026-05-23 18:05:27 +0000 <[exa]> davean: sensible reflection on the fact that the computer people will simply pirate the papers otherwise
2026-05-23 18:05:30 +0000 <davean> [exa]: Not when it would have made a life-changing difference for me they didn't!
2026-05-23 18:05:41 +0000 <monochrom> Yes you should hate ACM less. :)
2026-05-23 18:06:11 +0000 <davean> When I was in elementry school, destitute, and actually trying to learn they were all like "Only profesionals get to learn stuff! Keep everyone out!"
2026-05-23 18:06:27 +0000 <davean> And I'll probably never forgive them gatekeeping that knowleg
2026-05-23 18:06:40 +0000 <davean> but maybe I can stop refusing to be involved in anything they touch
2026-05-23 18:06:47 +0000merijn(~merijn@62.45.136.136) merijn
2026-05-23 18:07:26 +0000 <[exa]> like, at least compared to the amount of horsepoop originating from certain unnamed other publishers that I have to interact with, ACM is just great
2026-05-23 18:07:31 +0000 <davean> The ACM did a lot of active damage ot my life
2026-05-23 18:08:26 +0000 <[exa]> anyway yeah 10 years ago the paper availability was not great
2026-05-23 18:08:58 +0000 <davean> 10 years ago it was GREAT
2026-05-23 18:09:07 +0000 <davean> 10 years ago was SO MUCH BETTER
2026-05-23 18:09:12 +0000nitrix(~nitrix@user/meow/nitrix) nitrix
2026-05-23 18:09:43 +0000 <[exa]> as in, compared to 20 years ago?
2026-05-23 18:09:47 +0000 <davean> You could actually get the papers 10 years ago and they wouldn't kick out out like they were some sort of occult priesthood you had to do initation rights to talk to
2026-05-23 18:10:01 +0000 <davean> The 90s really
2026-05-23 18:10:10 +0000 <davean> They were DEEPLY evil in the 90s
2026-05-23 18:10:25 +0000 <[exa]> yeah that was abysmal, "become a university library pls"
2026-05-23 18:10:46 +0000humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-05-23 18:11:06 +0000 <davean> The amount my life would be better if the ACM hadn't existed in the 90s is immense
2026-05-23 18:11:36 +0000merijn(~merijn@62.45.136.136) (Ping timeout: 252 seconds)
2026-05-23 18:12:32 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-05-23 18:15:33 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-05-23 18:22:44 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-05-23 18:27:55 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-05-23 18:30:56 +0000ouilemur(~jgmerritt@user/ouilemur) ouilemur
2026-05-23 18:33:36 +0000karenw(~karenw@user/karenw) (Ping timeout: 252 seconds)
2026-05-23 18:38:21 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn