2024/10/29

2024-10-29 00:00:44 +0100sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 260 seconds)
2024-10-29 00:00:55 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 00:01:54 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 276 seconds)
2024-10-29 00:05:57 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 00:07:14 +0100sinbad(~sinbad@user/sinbad) ()
2024-10-29 00:07:59 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-10-29 00:12:40 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2024-10-29 00:13:41 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-10-29 00:14:10 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 00:17:39 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 265 seconds)
2024-10-29 00:20:48 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-29 00:31:35 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 00:36:19 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-10-29 00:37:34 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2024-10-29 00:40:00 +0100Nachtgespenst(~user@user/siracusa) siracusa
2024-10-29 00:40:01 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds)
2024-10-29 00:40:02 +0100ljdarj1ljdarj
2024-10-29 00:40:57 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 246 seconds)
2024-10-29 00:42:03 +0100Noinia(~Frank@77-162-168-71.fixed.kpn.net) (Ping timeout: 245 seconds)
2024-10-29 00:45:00 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2024-10-29 00:46:57 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 00:51:17 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-29 00:55:30 +0100Everything(~Everythin@178-133-153-185.mobile.vf-ua.net) (Quit: leaving)
2024-10-29 00:56:18 +0100hgolden_(~hgolden@146.70.173.165) hgolden
2024-10-29 00:58:47 +0100hgolden__(~hgolden@23.162.40.110) (Ping timeout: 244 seconds)
2024-10-29 01:01:49 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 01:02:20 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 01:05:05 +0100sadmax(~user@64.130.91.66) (Ping timeout: 248 seconds)
2024-10-29 01:05:37 +0100acidjnk_new(~acidjnk@p200300d6e72cfb16a87636e44c055c5c.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2024-10-29 01:05:47 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-10-29 01:06:16 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 01:06:38 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-29 01:08:34 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Client Quit)
2024-10-29 01:08:43 +0100werneta(~werneta@syn-071-083-160-242.res.spectrum.com) werneta
2024-10-29 01:11:30 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2024-10-29 01:15:10 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 01:19:23 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-10-29 01:19:23 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-10-29 01:19:33 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 01:20:09 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-29 01:21:09 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-10-29 01:21:34 +0100califax(~califax@user/califx) califx
2024-10-29 01:29:58 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2024-10-29 01:32:36 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 01:37:02 +0100tv(~tv@user/tv) (Quit: derp)
2024-10-29 01:37:03 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-29 01:37:27 +0100xff0x(~xff0x@2405:6580:b080:900:b00a:f648:5747:c396) (Ping timeout: 276 seconds)
2024-10-29 01:46:20 +0100tv(~tv@user/tv) tv
2024-10-29 01:47:58 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 01:48:35 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 01:52:50 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 01:54:33 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-10-29 02:01:42 +0100user363627(~user@user/user363627) user363627
2024-10-29 02:03:40 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 02:03:50 +0100jumper149(~jumper149@base.felixspringer.xyz) (Quit: WeeChat 4.4.2)
2024-10-29 02:06:30 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 02:11:14 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-10-29 02:21:53 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 02:22:56 +0100gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2024-10-29 02:23:39 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2024-10-29 02:23:50 +0100hgolden__(~hgolden@204.152.216.122) hgolden
2024-10-29 02:23:53 +0100cattiesCatGPT
2024-10-29 02:26:18 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-29 02:26:42 +0100hgolden_(~hgolden@146.70.173.165) (Ping timeout: 265 seconds)
2024-10-29 02:28:09 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2024-10-29 02:28:25 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 02:31:35 +0100yaroot(~yaroot@2400:4052:ac0:d901:1cf4:2aff:fe51:c04c) (Remote host closed the connection)
2024-10-29 02:32:18 +0100yaroot(~yaroot@2400:4052:ac0:d901:1cf4:2aff:fe51:c04c) yaroot
2024-10-29 02:37:16 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 02:41:35 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2024-10-29 02:42:07 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds)
2024-10-29 02:47:59 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 260 seconds)
2024-10-29 02:52:38 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 02:55:13 +0100jc_nn(~jc@2803:c180:2003:5c33:6f77:c169:b2b:789f) (Quit: Leaving)
2024-10-29 02:57:00 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-29 02:59:43 +0100L29Ah(~L29Ah@wikipedia/L29Ah) ()
2024-10-29 03:06:24 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Remote host closed the connection)
2024-10-29 03:07:17 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 03:07:59 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 03:09:39 +0100L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2024-10-29 03:11:33 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-10-29 03:12:30 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-29 03:14:37 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2024-10-29 03:14:51 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 03:14:58 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-10-29 03:15:12 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 03:23:23 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 03:24:22 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 03:29:58 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 245 seconds)
2024-10-29 03:29:59 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-10-29 03:30:36 +0100mantraofpie(~mantraofp@user/mantraofpie) (Remote host closed the connection)
2024-10-29 03:30:58 +0100mantraofpie(~mantraofp@user/mantraofpie) mantraofpie
2024-10-29 03:37:49 +0100hgolden_(~hgolden@204.152.216.106) hgolden
2024-10-29 03:41:14 +0100hgolden__(~hgolden@204.152.216.122) (Ping timeout: 260 seconds)
2024-10-29 03:41:26 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 03:45:46 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-29 03:56:48 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 04:00:30 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 04:01:10 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-29 04:02:11 +0100 <markasoftware> how many bytes per character does a naive `String` actually use? There's some info online that claims 32 bytes per character, but my math works out to 40 bytes: (8) for the linked list constructor tag, (8) for ptr to char, (8) for char constructor tag, (4 padded to 8) for the char content, (8) for pointer to next linked list node. 8*5=40. Or does it somehow elide the char constructor tag?
2024-10-29 04:06:29 +0100 <geekosaur> seems to me anything that would allow that would also elide the pointer to the char (i.e. inline it into the list constructor)… but it's not strict so neither one can happen
2024-10-29 04:09:41 +0100haritz(~hrtz@user/haritz) (Ping timeout: 248 seconds)
2024-10-29 04:12:11 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 04:12:14 +0100 <markasoftware> https://blog.johantibell.com/2011/06/memory-footprints-of-some-common-data.html clears up a lot of the details
2024-10-29 04:12:15 +0100haritz(~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk)
2024-10-29 04:14:04 +0100haritz(~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk) (Changing host)
2024-10-29 04:14:04 +0100haritz(~hrtz@user/haritz) haritz
2024-10-29 04:14:44 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 04:16:34 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-29 04:27:33 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 04:28:04 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 04:31:58 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-29 04:40:30 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 04:42:57 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 04:46:56 +0100gmg(~user@user/gehmehgeh) (Ping timeout: 260 seconds)
2024-10-29 04:47:33 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-29 04:49:14 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2024-10-29 04:53:39 +0100AlexZenon(~alzenon@178.34.161.119) (Ping timeout: 246 seconds)
2024-10-29 04:54:36 +0100AlexNoo(~AlexNoo@178.34.161.119) (Ping timeout: 265 seconds)
2024-10-29 04:54:54 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds)
2024-10-29 04:56:51 +0100spew(~spew@155.133.15.121) (Quit: spew)
2024-10-29 04:58:19 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 05:00:04 +0100AlexNoo(~AlexNoo@178.34.150.78)
2024-10-29 05:01:32 +0100td_(~td@i53870902.versanet.de) (Ping timeout: 272 seconds)
2024-10-29 05:02:45 +0100td_(~td@i5387091D.versanet.de) td_
2024-10-29 05:03:19 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-10-29 05:06:42 +0100AlexZenon(~alzenon@178.34.150.78)
2024-10-29 05:09:13 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 05:11:59 +0100AlexNoo_(~AlexNoo@178.34.150.78)
2024-10-29 05:13:45 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 05:13:52 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 05:15:14 +0100AlexNoo(~AlexNoo@178.34.150.78) (Ping timeout: 252 seconds)
2024-10-29 05:18:31 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-29 05:30:32 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 05:32:03 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 245 seconds)
2024-10-29 05:32:15 +0100Nixkernal(~Nixkernal@52.131.63.188.dynamic.cust.swisscom.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2024-10-29 05:32:23 +0100alphazone(~alphazone@2.219.56.221) (Ping timeout: 255 seconds)
2024-10-29 05:33:00 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2024-10-29 05:33:51 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 252 seconds)
2024-10-29 05:34:57 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-29 05:40:09 +0100AlexZenon(~alzenon@178.34.150.78) (Ping timeout: 252 seconds)
2024-10-29 05:40:46 +0100AlexNoo(~AlexNoo@178.34.150.78)
2024-10-29 05:41:00 +0100AlexNoo_(~AlexNoo@178.34.150.78) (Ping timeout: 265 seconds)
2024-10-29 05:43:16 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 05:45:55 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 05:50:26 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-29 05:50:43 +0100AlexZenon(~alzenon@178.34.150.78)
2024-10-29 05:51:32 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 05:56:15 +0100user363627(~user@user/user363627) (Remote host closed the connection)
2024-10-29 06:01:15 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 06:08:30 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-10-29 06:19:06 +0100rosco(~rosco@60.53.5.183) rosco
2024-10-29 06:19:18 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 06:21:01 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 06:23:54 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-29 06:25:16 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 06:26:46 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 06:30:01 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-10-29 06:34:21 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 06:34:38 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 06:39:09 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-10-29 06:43:05 +0100michalz(~michalz@185.246.207.221)
2024-10-29 06:50:02 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 06:54:24 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-29 07:04:08 +0100kaskal(~kaskal@213-225-13-57.nat.highway.a1.net) (Ping timeout: 245 seconds)
2024-10-29 07:05:24 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 07:10:02 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
2024-10-29 07:13:30 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds)
2024-10-29 07:16:10 +0100euleritian(~euleritia@dynamic-176-002-002-253.176.2.pool.telefonica.de)
2024-10-29 07:19:57 +0100euleritian(~euleritia@dynamic-176-002-002-253.176.2.pool.telefonica.de) (Read error: Connection reset by peer)
2024-10-29 07:20:47 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 07:20:56 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 07:21:05 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 07:25:23 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-10-29 07:27:03 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds)
2024-10-29 07:27:49 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 265 seconds)
2024-10-29 07:34:43 +0100euleritian(~euleritia@176.2.145.170)
2024-10-29 07:36:10 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 07:42:57 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 07:42:59 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-29 07:50:19 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 07:55:25 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 07:56:00 +0100CiaoSen(~Jura@2a05:5800:47e:3300:ca4b:d6ff:fec1:99da) CiaoSen
2024-10-29 07:59:04 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-29 08:00:01 +0100caconym(~caconym@user/caconym) (Quit: bye)
2024-10-29 08:00:39 +0100caconym(~caconym@user/caconym) caconym
2024-10-29 08:03:13 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-29 08:03:22 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 08:06:26 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 248 seconds)
2024-10-29 08:08:28 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2024-10-29 08:14:17 +0100euleritian(~euleritia@176.2.145.170) (Read error: Connection reset by peer)
2024-10-29 08:14:36 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 08:15:08 +0100Noinia(~Frank@77-162-168-71.fixed.kpn.net)
2024-10-29 08:17:24 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 08:18:18 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-29 08:20:16 +0100acidjnk_new(~acidjnk@p200300d6e7283f47c4b62c6ffe9eb9d8.dip0.t-ipconnect.de)
2024-10-29 08:21:08 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2024-10-29 08:21:42 +0100euleritian(~euleritia@dynamic-176-006-134-175.176.6.pool.telefonica.de)
2024-10-29 08:21:54 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-29 08:26:15 +0100alphazone(~alphazone@2.219.56.221)
2024-10-29 08:26:44 +0100euleritian(~euleritia@dynamic-176-006-134-175.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-10-29 08:27:02 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 08:27:03 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-29 08:27:22 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2024-10-29 08:27:39 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 08:32:30 +0100AlexZenon(~alzenon@178.34.150.78) (Ping timeout: 252 seconds)
2024-10-29 08:32:46 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 08:36:30 +0100AlexZenon(~alzenon@178.34.150.78)
2024-10-29 08:36:31 +0100werneta(~werneta@syn-071-083-160-242.res.spectrum.com) (Remote host closed the connection)
2024-10-29 08:38:00 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-10-29 08:40:10 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 08:40:21 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be) kuribas
2024-10-29 08:43:08 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2024-10-29 08:44:24 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
2024-10-29 08:44:29 +0100Lord_of_Life_Lord_of_Life
2024-10-29 08:45:44 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-10-29 08:48:09 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 08:52:16 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-10-29 08:52:55 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds)
2024-10-29 08:56:25 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-10-29 08:59:29 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 09:03:15 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 09:04:05 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-10-29 09:06:30 +0100econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2024-10-29 09:07:49 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-29 09:08:01 +0100sord937(~sord937@gateway/tor-sasl/sord937) sord937
2024-10-29 09:08:46 +0100ft(~ft@p4fc2a216.dip0.t-ipconnect.de) (Quit: leaving)
2024-10-29 09:09:39 +0100acidjnk_new(~acidjnk@p200300d6e7283f47c4b62c6ffe9eb9d8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2024-10-29 09:15:36 +0100acidjnk_new(~acidjnk@p200300d6e7283f47c4b62c6ffe9eb9d8.dip0.t-ipconnect.de)
2024-10-29 09:16:04 +0100Square2(~Square4@user/square) Square
2024-10-29 09:17:12 +0100jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) jespada
2024-10-29 09:17:42 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 09:18:33 +0100alp(~alp@2001:861:e3d6:8f80:f60c:ddc9:c66e:3f2c)
2024-10-29 09:23:29 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-10-29 09:26:25 +0100mantraofpie_(~mantraofp@user/mantraofpie) mantraofpie
2024-10-29 09:27:31 +0100mantraofpie(~mantraofp@user/mantraofpie) (Ping timeout: 260 seconds)
2024-10-29 09:29:05 +0100rosco(~rosco@60.53.5.183) (Quit: Lost terminal)
2024-10-29 09:37:03 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-29 09:37:34 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 09:43:02 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 255 seconds)
2024-10-29 09:44:01 +0100chele(~chele@user/chele) chele
2024-10-29 09:52:33 +0100acidjnk_new(~acidjnk@p200300d6e7283f47c4b62c6ffe9eb9d8.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2024-10-29 09:57:05 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 10:00:47 +0100merijn(~merijn@77.242.116.146) merijn
2024-10-29 10:01:59 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-10-29 10:03:48 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 252 seconds)
2024-10-29 10:05:33 +0100 <probie> markasoftware: Under ideal circumstances, less than one byte per character
2024-10-29 10:06:53 +0100 <probie> `repeat 'a'` uses finite space for a non-finite string, so the "average" numbers of bytes per character is 0 :p
2024-10-29 10:08:24 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2024-10-29 10:14:56 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 10:19:27 +0100laxmik(~laxmik@ip-109-40-177-194.web.vodafone.de) laxmik
2024-10-29 10:20:18 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 10:21:13 +0100laxmik(~laxmik@ip-109-40-177-194.web.vodafone.de) (Client Quit)
2024-10-29 10:21:23 +0100 <tomsmeding> markasoftware: also, string _literals_ in your haskell source are compiled to some `base` function applied to a C string. So literal strings are stored as compactly as C would store them (with perhaps a single pointer as overhead), and are converted to linked-list nodes on demand
2024-10-29 10:22:24 +0100mari-estel(~mari-este@user/mari-estel) mari-estel
2024-10-29 10:24:54 +0100lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2024-10-29 10:25:20 +0100kaskal(~kaskal@213-147-165-220.nat.highway.webapn.at) kaskal
2024-10-29 10:26:04 +0100igemnace_(~igemnace@user/igemnace) igemnace
2024-10-29 10:26:10 +0100igemnace(~igemnace@user/igemnace) (Ping timeout: 252 seconds)
2024-10-29 10:27:56 +0100igemnace_igemnace
2024-10-29 10:29:19 +0100 <ash3en> in attoparsec, how would I split an input in 4 bytes until the end of input/less than 4 bytes left?
2024-10-29 10:31:10 +0100Inst(~Inst@user/Inst) Inst
2024-10-29 10:31:12 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Remote host closed the connection)
2024-10-29 10:31:13 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds)
2024-10-29 10:31:32 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-10-29 10:31:34 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Client Quit)
2024-10-29 10:31:52 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-10-29 10:34:47 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 10:34:57 +0100euleritian(~euleritia@dynamic-176-006-132-151.176.6.pool.telefonica.de)
2024-10-29 10:35:17 +0100 <merijn> tomsmeding: eh, that statement needs a bunch of asterisks :p
2024-10-29 10:35:40 +0100 <merijn> tomsmeding: In that C specifies no encodings for "strings" at all, and GHC stores strings in a very specific encoding :p
2024-10-29 10:35:59 +0100 <merijn> (which used to be something other than UTF-8 for historical reasons, but I dunno if that changes since I last looked)
2024-10-29 10:36:36 +0100 <tomsmeding> fair point
2024-10-29 10:36:42 +0100 <merijn> But yeah, String literals are stored as dense binary blobs that are lazily decoded into Haskells linked list format "on-demand"
2024-10-29 10:37:01 +0100 <tomsmeding> fairly sure it's UTF-8 now, and also if you store the string in a variable, `length` it or something, and then use it again, you materialise the linked-list repr
2024-10-29 10:37:45 +0100 <merijn> I know there was some work on using utf-8, but god knows if that landed yet
2024-10-29 10:37:56 +0100 <merijn> It's also mostly irrelevant for 90% of users
2024-10-29 10:38:40 +0100 <tomsmeding> a Core dump of `putStrLn "hello"` shows `GHC.CString.unpackCStringUtf8#` being used
2024-10-29 10:38:47 +0100 <Maxdamantus> I would guess they'd use UTF-32 but selecting 8-bit, 16-bit or 32-bit storage units depending on `maximum . map fromEnum`
2024-10-29 10:39:03 +0100 <Maxdamantus> (like CPython does)
2024-10-29 10:39:06 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-10-29 10:39:11 +0100 <merijn> Maxdamantus: That sounds dumb as hell, tbh
2024-10-29 10:39:45 +0100 <tomsmeding> and if I put some non-ascii chracters in the string, they end up as UTF-8 bytes in the Core
2024-10-29 10:39:54 +0100 <tomsmeding> so merijn seems that work has landed :)
2024-10-29 10:40:16 +0100 <Maxdamantus> Well, strings in Python and Haskell are dumb as hell, and I think the CPython representation is a fairly reasonable one given that nasty model.
2024-10-29 10:40:44 +0100 <tomsmeding> and this pattern is the same back to 8.4.4, the earliest I have around to test on right now (though the name of the function changes a bit between versions)
2024-10-29 10:40:57 +0100 <merijn> Maxdamantus: I think strings in Haskell are about as well as you can do
2024-10-29 10:41:10 +0100 <Maxdamantus> imo Unicode strings would be better.
2024-10-29 10:41:12 +0100 <merijn> i.e. having lots of different string types for specific usecase
2024-10-29 10:41:14 +0100 <Maxdamantus> (ie, UTF-8 strings)
2024-10-29 10:41:22 +0100 <Maxdamantus> (ie, 8-bit sequences)
2024-10-29 10:41:25 +0100euleritian(~euleritia@dynamic-176-006-132-151.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-10-29 10:41:27 +0100 <tomsmeding> Text?
2024-10-29 10:41:31 +0100 <merijn> That's Text
2024-10-29 10:41:37 +0100 <tomsmeding> that's UTF-8 these days
2024-10-29 10:41:42 +0100 <merijn> also, UTF-8 != 8 bit sequences
2024-10-29 10:41:42 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 10:41:44 +0100 <Maxdamantus> Text isn't any standard Unicode string.
2024-10-29 10:41:54 +0100 <Maxdamantus> Text is for sequences of Unicode Scalar Values, which is different.
2024-10-29 10:42:16 +0100 <merijn> Maxdamantus: If you want raw unicode bytes then ByteString
2024-10-29 10:42:31 +0100 <Maxdamantus> a standard "Unicode string" should be a sequence of either UTF-8, UTF-16 or UTF-32 code units (pick one, but I'd recommend UTF-8)
2024-10-29 10:42:39 +0100 <merijn> Ancient hot-take: We should turn ByteString into a type alias and rename the type Bytes
2024-10-29 10:43:01 +0100 <Maxdamantus> (where a code unit is just any integer with that designated width)
2024-10-29 10:43:08 +0100 <merijn> Maxdamantus: You can get those easily via both ByteString and Storable Vector
2024-10-29 10:43:40 +0100 <Maxdamantus> merijn: sure, but then they don't appear to be "strings" to most users.
2024-10-29 10:44:11 +0100 <tomsmeding> Maxdamantus: do you want a string type that can simultaneously be seen as a sequence of bytes in UTF-8 and as a sequence of unicode scalar values?
2024-10-29 10:44:16 +0100 <tomsmeding> trying to parse what you are saying
2024-10-29 10:44:49 +0100 <Maxdamantus> tomsmeding: I want a standard Unicode string using UTF-8.
2024-10-29 10:44:56 +0100 <tomsmeding> what is a "standard Unicode string"
2024-10-29 10:45:02 +0100 <tomsmeding> what is that what Text is not
2024-10-29 10:45:06 +0100 <Maxdamantus> tomsmeding: the UTF-8 variant is a byte sequence.
2024-10-29 10:45:18 +0100 <Maxdamantus> tomsmeding: Text doesn't allow representation of ill-formed Unicode strings.
2024-10-29 10:45:23 +0100 <merijn> Maxdamantus: You are aware not not every byte sequence is UTF-8, yes?
2024-10-29 10:45:23 +0100 <tomsmeding> how is what you are saying different from what I just asked?
2024-10-29 10:45:58 +0100 <Maxdamantus> merijn: I'm aware that not every UTF-8 Unicode string is well-formed (aka "in UTF-8")
2024-10-29 10:46:38 +0100 <Maxdamantus> tomsmeding: I dunno. It's hard to parse what you asked.
2024-10-29 10:46:53 +0100 <Maxdamantus> If you read Unicode chapter 3, it explains what a Unicode string is.
2024-10-29 10:46:54 +0100 <tomsmeding> I'm finding it equally hard to parse what you are saying, and I'm not sure whose fault it is :p
2024-10-29 10:47:16 +0100 <Maxdamantus> and in particular, Unicode chapter 3 will talk about ill-formed Unicode strings and the fact that you can still do sensible operations on them.
2024-10-29 10:47:40 +0100 <Maxdamantus> eg, concatenating ill-formed strings to create well-formed strings, a concept that is not possible with `Text`
2024-10-29 10:47:45 +0100 <merijn> Maxdamantus: That's not something that MOST programmers want, though
2024-10-29 10:47:55 +0100 <merijn> Maxdamantus: And you can still do it relatively easily
2024-10-29 10:48:00 +0100 <tomsmeding> I see
2024-10-29 10:48:33 +0100 <merijn> Maxdamantus: Text will *happily* let you rip the raw bytes out of one
2024-10-29 10:48:38 +0100 <Maxdamantus> merijn: I'd argue that most programmers do want that implicitly.
2024-10-29 10:48:48 +0100 <tomsmeding> yeah I strongly suspect that Haskell's model of "you either have a sequence of unstructured bytes (to be later interpreted into something else), or a well-formed unicode string" matches what you need in practice quite precisely
2024-10-29 10:48:53 +0100 <Maxdamantus> merijn: since otherwise programs will randomly fail when you given them ill-formed Unicode.
2024-10-29 10:49:12 +0100mari-estel(~mari-este@user/mari-estel) (Remote host closed the connection)
2024-10-29 10:49:19 +0100 <Maxdamantus> and fundamentally there's nothing to stop ill-formed Unicode from occurring (particularly ill-formed UTF-8)
2024-10-29 10:49:21 +0100 <merijn> Maxdamantus: I mean, that's why you parse first
2024-10-29 10:49:41 +0100 <tomsmeding> in what situation would you want ill-formed UTF8 in a string?
2024-10-29 10:49:46 +0100 <Maxdamantus> merijn: have all the filenames in my filesystem been parsed before they reach Haskell?
2024-10-29 10:49:48 +0100 <tomsmeding> as a "user"
2024-10-29 10:49:51 +0100 <merijn> Maxdamantus: You'd normally get input (from disk/network) as ByteString and decode to Text, and the handling off ill-formed unicode is handled in the decode
2024-10-29 10:50:02 +0100 <merijn> Maxdamantus: I mean, that question is screwed anyway
2024-10-29 10:50:05 +0100 <Maxdamantus> tomsmeding: head -c 10 somefile.txt
2024-10-29 10:50:14 +0100 <merijn> Maxdamantus: Because file names are not unicode at all
2024-10-29 10:50:24 +0100 <tomsmeding> well `head` should not assume that either the file name, or the file's contents, are in any particular encoding whatsoever
2024-10-29 10:50:30 +0100 <merijn> Maxdamantus: That head example is solved by doing things properly
2024-10-29 10:50:31 +0100 <tomsmeding> that's little to do with unicode :p
2024-10-29 10:50:31 +0100 <Maxdamantus> tomsmeding: exactly.
2024-10-29 10:50:39 +0100 <merijn> Maxdamantus: That is, do IO in ByteString, then convert to unicode
2024-10-29 10:50:47 +0100 <Maxdamantus> tomsmeding: so `head` should not be responsible for ensuring the output is well-formed Unicode.
2024-10-29 10:50:47 +0100 <tomsmeding> that should not even be an "ill-formed unicode string", it should just be a byte sequence
2024-10-29 10:51:02 +0100 <tomsmeding> ByteString is the right model for that, not IllFormedText
2024-10-29 10:51:04 +0100 <Maxdamantus> tomsmeding: but should the Haskell program crash because it's been given such a string?
2024-10-29 10:51:12 +0100 <tomsmeding> no, because it uses ByteString, not Text
2024-10-29 10:51:15 +0100 <merijn> Maxdamantus: No, and they won't if you do it properly
2024-10-29 10:51:19 +0100 <tomsmeding> the program should make no assumptions about what's in there
2024-10-29 10:51:31 +0100 <merijn> Maxdamantus: You read ByteString and then decode to text
2024-10-29 10:51:39 +0100 <Maxdamantus> "do it properly" is hard to get right when you're telling people to use `ByteString` for textual data.
2024-10-29 10:51:43 +0100 <tomsmeding> now, something like `wc` will need to make assumptions because it handles certain characters specially
2024-10-29 10:51:46 +0100 <Maxdamantus> Unicode was designed to cater to these sorts of things.
2024-10-29 10:52:01 +0100 <merijn> Maxdamantus: No, I'm saying "do IO with ByteString and decode to Text *then* do whatever you want"
2024-10-29 10:52:13 +0100 <tomsmeding> what is a "code unit" in the unicode spec?
2024-10-29 10:52:13 +0100 <Maxdamantus> Having a crappy restricted string type just ignores these design points from Unicode.
2024-10-29 10:52:17 +0100 <merijn> Maxdamantus: Text's decoding functions handle ill-formed unicode fine
2024-10-29 10:52:27 +0100 <merijn> See, e.g. lenientDecode
2024-10-29 10:52:30 +0100 <Maxdamantus> tomsmeding: in UTF-8 it's a byte.
2024-10-29 10:52:58 +0100 <merijn> Or the `replace` and `ignore` decoders
2024-10-29 10:53:20 +0100 <merijn> Maxdamantus: ok, but explain how these problems aren't solved by just "read as bytestring and decode", which is how you're supposed to do it
2024-10-29 10:53:30 +0100 <tomsmeding> the spec points to D92 for the definition of "code unit" for UTF8, but then "code unit" doesn't appear in D92
2024-10-29 10:54:17 +0100 <tomsmeding> ok but generalising from D91 about UTF16 does imply that it would be a byte for UTF8
2024-10-29 10:55:16 +0100 <Maxdamantus> It says that it specifies what a UTF-8 code unit sequence is in D92, which it does specify.
2024-10-29 10:56:33 +0100 <tomsmeding> Maxdamantus: "code unit" does not appear in D92?
2024-10-29 10:56:52 +0100 <Maxdamantus> tomsmeding: no, because D92 is about the interpretation of code unit sequences.
2024-10-29 10:57:28 +0100 <Maxdamantus> tomsmeding: D78 gives a general meaning of a "code unit sequence": "An ordered sequence of one or more code units"
2024-10-29 10:57:37 +0100 <Maxdamantus> > hen the code unit is an 8-bit unit, a code unit sequence may also be referred
2024-10-29 10:57:38 +0100 <Maxdamantus> to as a byte sequence
2024-10-29 10:57:38 +0100 <lambdabot> <hint>:1:35: error: parse error on input ‘,’
2024-10-29 10:59:23 +0100 <tomsmeding> I see
2024-10-29 10:59:27 +0100 <Maxdamantus> imo Go is an example of a relatively recent language that has at least got strings right.
2024-10-29 10:59:52 +0100 <Maxdamantus> and the core developers there also obviously had a lot to do with inventing UTF-8.
2024-10-29 11:00:00 +0100 <tomsmeding> I guess merijn and I are just not convinced how useful it is to a programmer to have a string type available that allows unicode operations on potentially ill-formed unicode
2024-10-29 11:00:30 +0100 <Maxdamantus> you basically just have one string type, so developers aren't having to figure out exactly what their strings are going to be used for.
2024-10-29 11:00:56 +0100 <Maxdamantus> Go programs are unlikely to crash if you give them a truncated string, or a filename in some other encoding.
2024-10-29 11:00:57 +0100 <tomsmeding> haskell likes to split things out more, and indicate in types exactly what you are or are not supposed to do with a thing
2024-10-29 11:01:22 +0100 <Maxdamantus> right, but with strings you can't be too specific.
2024-10-29 11:01:41 +0100 <Maxdamantus> if you're trying to be specific, you might have different types for English text and Arabic text.
2024-10-29 11:01:56 +0100 <Maxdamantus> or different types for sentences and words.
2024-10-29 11:02:07 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 11:02:13 +0100 <Maxdamantus> or different types for sentences and filenames.
2024-10-29 11:02:14 +0100 <merijn> tomsmeding: I am convinced being able to handle ill-formed unicode is useful
2024-10-29 11:02:28 +0100 <merijn> I disagree that it is the right default and that it's not possible in Haskell right now
2024-10-29 11:02:44 +0100 <merijn> It is *obviously* the wrong default and doing what Maxdamantus is trivial in Haskell
2024-10-29 11:02:47 +0100 <tomsmeding> merijn: how would you handle ill-formedu unicode in haskell?
2024-10-29 11:02:54 +0100 <Maxdamantus> I find it hard to see why it's useful for it not to be the default.
2024-10-29 11:03:01 +0100 <tomsmeding> lenient conversion to Text forgets information about the ill-formed bytes
2024-10-29 11:03:03 +0100 <merijn> tomsmeding: Like I said, bytestring + decode
2024-10-29 11:03:28 +0100 <Maxdamantus> If you're disallowing ill-formed strings by default, you're just making it so your program has random crashes or other branching behaviour that you need to reason about.
2024-10-29 11:03:38 +0100 <merijn> Maxdamantus: Because 99% of program logic considers ill-formed unicode an input or output error
2024-10-29 11:03:49 +0100 <merijn> Maxdamantus: Why do you say crash?
2024-10-29 11:04:01 +0100 <merijn> Maxdamantus: Why would a Haskell program crash on encountering ill-formed unicode
2024-10-29 11:04:06 +0100 <tomsmeding> Maxdamantus: that's a weak argument: what should (!!) do on ill-formed unicode?
2024-10-29 11:04:12 +0100 <tomsmeding> error?
2024-10-29 11:04:20 +0100 <tomsmeding> then we've replaced errors in one place with errors in another place
2024-10-29 11:04:49 +0100 <merijn> For 99% of code if you get ill-formed unicode someone already fucked up somewhere. So you wanna handle that at the program boundary
2024-10-29 11:04:59 +0100 <tomsmeding> (or the equivalent of (!!) on whatever the UnicodeString type would be)
2024-10-29 11:05:13 +0100 <tomsmeding> the 1% is not 0% though
2024-10-29 11:05:22 +0100 <tomsmeding> but if you're in the 1%, you typically know
2024-10-29 11:05:33 +0100 <Maxdamantus> tomsmeding: !! should probably be split out into separate operators depending on what you're actually trying to index.
2024-10-29 11:05:51 +0100 <tomsmeding> well, take the one that is supposed to return a unicode scalar
2024-10-29 11:06:19 +0100 <Maxdamantus> tomsmeding: but in general the natural way to index strings would be by code units, since that's the most memory-efficient and the least prone to misuse.
2024-10-29 11:06:46 +0100 <merijn> I still haven't gotten an answer to why a Haskell program would supposedly crash on encountering ill-formed unicode
2024-10-29 11:06:47 +0100 <Maxdamantus> ("misuse" meaning doing things like pretending that it makes sense to select individual code points from a string)
2024-10-29 11:07:10 +0100 <tomsmeding> ok, then what would `length` return?
2024-10-29 11:07:56 +0100 <Maxdamantus> $ ghci hello$'\xff'.hs
2024-10-29 11:07:57 +0100 <Maxdamantus> GHCi, version 9.4.7: https://www.haskell.org/ghc/ :? for help
2024-10-29 11:07:57 +0100 <Maxdamantus> <no location info>: error: recoverEncode: invalid argument (cannot encode character '\56575')
2024-10-29 11:08:07 +0100 <Maxdamantus> merijn: so why does that crash?L
2024-10-29 11:08:16 +0100 <tomsmeding> can I roughly reduce what you say to "there should be icu-style toLower methods on ByteStrings"?
2024-10-29 11:09:12 +0100 <Maxdamantus> tomsmeding: I think having separate types for strings vs. binary data is fine for semantic reasons, but they should be representationally equivalent, and ICU-style methods would make sense on strings.
2024-10-29 11:09:36 +0100 <Maxdamantus> note that ICU strings are indeed code unit sequences (either 8-bit or 16-bit, and maybe 32-bit but not sure)
2024-10-29 11:09:51 +0100hgolden__(~hgolden@146.70.173.165) hgolden
2024-10-29 11:09:53 +0100 <tomsmeding> what does ICU-style toLower do on invalid unicode?
2024-10-29 11:10:17 +0100 <Maxdamantus> I'd expect the obvious behaviour would be to preserve it, but I'd have to look it up.
2024-10-29 11:11:07 +0100 <merijn> Maxdamantus: Because the filename API is a fucking mess and it was being worked on with a proper platform portable API, but until that gets wider adoption you're hosed
2024-10-29 11:11:22 +0100 <merijn> Maxdamantus: The filename API being broken does not mean the approach to strings is broken
2024-10-29 11:11:30 +0100 <Maxdamantus> I'd say either preserving it or doing the replacement would be acceptable in that case, since it's processing the string, though my preference would be to preserve errors where possible.
2024-10-29 11:12:01 +0100 <Maxdamantus> merijn: if strings were sequences of bytes, filenames would probably just be strings and we wouldn't have this issue.
2024-10-29 11:12:16 +0100 <merijn> Maxdamantus: Except that is ALSO wrong
2024-10-29 11:12:21 +0100hgolden_(~hgolden@204.152.216.106) (Ping timeout: 252 seconds)
2024-10-29 11:12:35 +0100 <merijn> Maxdamantus: Because on Windows and (sorta, it's complicated) on macOS they *are* unicode sequences and not bytes
2024-10-29 11:12:38 +0100 <Maxdamantus> imo WTF-8 should be used for translating Windows filenames on-the-fly.
2024-10-29 11:12:53 +0100 <merijn> Maxdamantus: That is incorrect, though
2024-10-29 11:13:01 +0100 <merijn> Maxdamantus: Windows filenames have a defined encoding
2024-10-29 11:13:31 +0100 <Maxdamantus> merijn: Windows filenames are UTF-16 strings, ie sequences of 16-bit code units.
2024-10-29 11:13:49 +0100 <merijn> Maxdamantus: Right, which means that a file API that excepts bytes is wrong
2024-10-29 11:13:58 +0100 <Maxdamantus> merijn: they don't have a well-defined encoding on top of that (they're not guaranteed to be well-formed UTF-16)
2024-10-29 11:14:01 +0100 <merijn> Maxdamantus: Also, that is incorrect
2024-10-29 11:14:11 +0100 <Maxdamantus> merijn: which part?
2024-10-29 11:14:17 +0100 <merijn> Maxdamantus: There are defined normalisations for windows filenames
2024-10-29 11:14:18 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 11:14:31 +0100 <merijn> So it's not just "pass arbitrary UTF-16"
2024-10-29 11:14:41 +0100 <merijn> it's pass UTF-16 with specific normalisations
2024-10-29 11:14:52 +0100 <Maxdamantus> merijn: dunno what that means, but I'm 99.99% sure that "\uD800.txt" is a valid filename in Windows.
2024-10-29 11:15:04 +0100 <Maxdamantus> (where "\uD800" is a lone UTF-16 surrogate)
2024-10-29 11:15:45 +0100 <merijn> Maxdamantus: Anyway, the solution to that whole story is maerwald's baby (which is a properly type-safe way of representing names in a platform specific way)
2024-10-29 11:15:52 +0100turlando(~turlando@user/turlando) turlando
2024-10-29 11:17:53 +0100 <Maxdamantus> merijn: when you say "UTF-16 with specific normalisations", are you thinking about macOS? I know that macOS does specific normalisations on filenames.
2024-10-29 11:18:40 +0100 <Maxdamantus> (though I'm pretty sure Apple regard that as a mistake—I think they've undone that at some level in APFS)
2024-10-29 11:18:57 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) Smiles
2024-10-29 11:19:37 +0100 <Maxdamantus> anyway, imo it's not worth complicating the string type for Windows, since all these UTF-16 systems are kind of obsolete anyway.
2024-10-29 11:19:58 +0100 <Maxdamantus> WTF-8 allows you to translate at the boundary in a way that caters to these historical mistakes.
2024-10-29 11:20:41 +0100 <Square2> Iirc, I listened to a podcast, some 2-3 years ago, where they interviewed a woman who's job it was to onboard companies to Haskell. Like not so much technical but more business oriented in how Haskell industry worked / recruiting etc. Can't seem to find it now though. Sounds like Haskell foundation thing maybe, but when looking at their webpage I can't find anyone having the role this woman had.
2024-10-29 11:20:50 +0100 <Maxdamantus> chances are Windows will eventually switch at some point too, so it will seem particularly messy when you've got a separate type for "Windows filenames" that doesn't actually apply specifically to Windows.
2024-10-29 11:20:50 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-10-29 11:21:01 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 11:21:47 +0100 <haskellbridge> <maerwald> Maxdamantus: huh?
2024-10-29 11:22:01 +0100 <haskellbridge> <maerwald> WTF-8 is a private encoding that is not exposed to the user
2024-10-29 11:22:21 +0100 <haskellbridge> <maerwald> it's irrelevant for the rust API
2024-10-29 11:22:46 +0100 <haskellbridge> <maerwald> Maxdamantus: no, absolute nonsense... windows API has insane backwards compat
2024-10-29 11:23:23 +0100 <Maxdamantus> haskellbridge: maerwald: yeah, I guess I'm slightly more lenient than the WTF-8 spec in that regard, probably because I disagree with strings in Rust too (which is where WTF-8 is invented).
2024-10-29 11:23:57 +0100 <haskellbridge> <maerwald> there are ascii and wide char variants of almost all the api
2024-10-29 11:24:00 +0100 <haskellbridge> <maerwald> https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea
2024-10-29 11:24:06 +0100 <haskellbridge> <maerwald> https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilew
2024-10-29 11:24:29 +0100 <haskellbridge> <maerwald> if they'd switch to something else, they will not break anything for sure
2024-10-29 11:24:57 +0100 <Maxdamantus> maerwald: they can always reject certain filenames, which they already do.
2024-10-29 11:25:15 +0100 <haskellbridge> <maerwald> no, that depends on how you use the api
2024-10-29 11:27:01 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 248 seconds)
2024-10-29 11:27:07 +0100 <Maxdamantus> maerwald: are there not special characters that are impossible to use in filenames, like quotes or something? I know there are names like "con" that are rejected at a higher level but are still allowed using some lower-level APIs.
2024-10-29 11:27:39 +0100 <Maxdamantus> actually, I think some of those filenames are still special at a lower level.
2024-10-29 11:27:48 +0100 <haskellbridge> <maerwald> see https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats#skip-normalization
2024-10-29 11:27:48 +0100Maxdamantuscan't be bothered starting up his Windows VM to test.
2024-10-29 11:28:21 +0100 <haskellbridge> <maerwald> idk why I spent so much of my free time on filepaths... lmao
2024-10-29 11:29:07 +0100 <haskellbridge> <maerwald> windows is a maze of historical api
2024-10-29 11:29:16 +0100 <haskellbridge> <maerwald> they don't break anything
2024-10-29 11:29:22 +0100 <haskellbridge> <maerwald> and it grows forever
2024-10-29 11:29:36 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-10-29 11:29:56 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 11:30:19 +0100 <Rembane> It's quite fascinating that way, and somewhat of a cosmic horror
2024-10-29 11:30:41 +0100 <Maxdamantus> Should have just stuck with bytes, like Unix did.
2024-10-29 11:30:49 +0100 <Maxdamantus> UCS-2 .. oops
2024-10-29 11:30:56 +0100 <haskellbridge> <maerwald> yes it is bytes
2024-10-29 11:31:07 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 11:31:09 +0100 <Maxdamantus> well, it's 16-bit units.
2024-10-29 11:31:21 +0100 <haskellbridge> <maerwald> yes, wide char pointers
2024-10-29 11:31:47 +0100 <Maxdamantus> since I can create a filename like "\uD800.txt" in Windows, not sure what happens if you list that file using the *a functions.
2024-10-29 11:31:51 +0100 <haskellbridge> <maerwald> LPCWSTR
2024-10-29 11:31:56 +0100 <Maxdamantus> (feel free to explain what happens, if you know)
2024-10-29 11:32:14 +0100 <haskellbridge> <maerwald> https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/76f10dd8-699d-45e6-a53c-5aef…
2024-10-29 11:32:55 +0100 <haskellbridge> <maerwald> no idea, never used the *a variants and the haskell Win32 package uses the *w variants
2024-10-29 11:33:04 +0100 <haskellbridge> <maerwald> and that's what the ecosystem depends on
2024-10-29 11:33:41 +0100 <haskellbridge> <maerwald> I have no idea how they got brick to work on windows
2024-10-29 11:33:43 +0100 <haskellbridge> <maerwald> lol
2024-10-29 11:33:54 +0100acidjnk_new(~acidjnk@p200300d6e7283f475911645e2836b524.dip0.t-ipconnect.de) acidjnk
2024-10-29 11:34:00 +0100 <haskellbridge> <maerwald> would have expected an absolute clusterf*ck regarding input/encoding and whatnot
2024-10-29 11:34:10 +0100 <Maxdamantus> actually presumably with the *a variants it should translate the filenames according to the current locale/encoding? eg, CP-1252 or ISO-8859-1 or something?
2024-10-29 11:34:31 +0100 <Maxdamantus> iirc from utf8everywhere they essentially have a locale where it translates to UTF-8 instead.
2024-10-29 11:34:50 +0100 <Maxdamantus> maybe the optimal thing would be for them to have a locale where it translates to WTF-8.
2024-10-29 11:37:02 +0100 <merijn> maerwald: You spent all the free time so we don't have to
2024-10-29 11:37:15 +0100 <haskellbridge> <maerwald> pff
2024-10-29 11:37:18 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 11:37:31 +0100 <merijn> And I, for one, appreciate the sacrifice of your sanity ;)
2024-10-29 11:38:14 +0100Digitteknohippie(~user@user/digit) Digit
2024-10-29 11:38:49 +0100Digit(~user@user/digit) (Ping timeout: 260 seconds)
2024-10-29 11:38:58 +0100 <haskellbridge> <maerwald> that will bring us forward a bit https://github.com/commercialhaskell/stackage/issues/7550
2024-10-29 11:40:45 +0100 <Square2> What is the status of Haskell and Windows btw? Is it possible to work with it properly?
2024-10-29 11:41:06 +0100 <ash3en> Square2: 50/50 chance I'd say
2024-10-29 11:41:19 +0100 <ash3en> WSL was my bet until I switched back to Linux again
2024-10-29 11:41:31 +0100 <Square2> ash3en, doesn't sound to reassuring. =/
2024-10-29 11:41:31 +0100sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-10-29 11:41:36 +0100 <Square2> too*
2024-10-29 11:42:10 +0100Maxdamantushas recently been figuring out how to use Windows for work.
2024-10-29 11:42:26 +0100 <haskellbridge> <maerwald> Square2: no native toolchain... still depends on mingw
2024-10-29 11:42:32 +0100 <haskellbridge> <maerwald> but works ok
2024-10-29 11:42:57 +0100CiaoSen(~Jura@2a05:5800:47e:3300:ca4b:d6ff:fec1:99da) (Ping timeout: 248 seconds)
2024-10-29 11:43:24 +0100 <haskellbridge> <maerwald> and there's a pesky posix compat layer in the GHC RTS that unifies across unix and windows
2024-10-29 11:43:42 +0100 <haskellbridge> <maerwald> the new windows io manager ought to fix that, but I'm not sure how stable it is
2024-10-29 11:43:48 +0100 <Maxdamantus> the environment I'm using is a bit restrictive, so can't use arbitrary things like msys2, though git bash and WezTerm are allowed.
2024-10-29 11:43:52 +0100 <haskellbridge> <maerwald> RTS option --io-manager=native I believe
2024-10-29 11:43:58 +0100 <Square2> maerwald, I'd hoped WSL solve all problems
2024-10-29 11:44:10 +0100 <haskellbridge> <maerwald> SPJ uses that
2024-10-29 11:44:36 +0100DigitteknohippieDigit
2024-10-29 11:44:43 +0100 <Maxdamantus> (preferably I'd install tmux through msys2, since WezTerm seems to be extremely slow, but can't figure out another decent way to get tabbed terminals)
2024-10-29 11:44:50 +0100 <Square2> maerwald: WSL?
2024-10-29 11:44:59 +0100 <haskellbridge> <maerwald> WSL2
2024-10-29 11:45:04 +0100 <Square2> gotcha
2024-10-29 11:45:08 +0100rosco(~rosco@60.53.5.183) rosco
2024-10-29 11:45:15 +0100 <haskellbridge> <maerwald> WSL1 is unusable afair
2024-10-29 11:47:31 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 264 seconds)
2024-10-29 11:47:53 +0100 <ash3en> WSL2 did good for me with Haskell
2024-10-29 11:48:36 +0100 <ash3en> it were other things than haskell that drove me back from Windows again :D
2024-10-29 11:52:53 +0100Digit(~user@user/digit) (Ping timeout: 244 seconds)
2024-10-29 11:55:08 +0100 <tomsmeding> WSL2 works fine for haskell
2024-10-29 12:00:05 +0100caconym(~caconym@user/caconym) (Quit: bye)
2024-10-29 12:02:18 +0100caconym(~caconym@user/caconym) caconym
2024-10-29 12:02:30 +0100 <ash3en> may i ask this again since it was buried in the discussion earlier I guess: in attoparsec, how would I split an input in 4 bytes until the end of input/less than 4 bytes left?
2024-10-29 12:04:08 +0100 <ash3en> i want to get a list with all 4 byte-pairs, don't need to decode them
2024-10-29 12:05:43 +0100 <Rembane> ash3en: Do you know how to read 4 bytes using attoparsec?
2024-10-29 12:05:46 +0100Rembaneis socratic
2024-10-29 12:05:56 +0100 <ash3en> take 4
2024-10-29 12:06:02 +0100 <ash3en> i think
2024-10-29 12:07:07 +0100 <ash3en> combined with many was my first thought. but stopping it was not successfull so far
2024-10-29 12:07:13 +0100 <ash3en> many'
2024-10-29 12:08:24 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 12:09:15 +0100 <Rembane> ash3en: If you have a list of 4 byte chunks, and that list is called xs, you can go: zip xs (tail xs)
2024-10-29 12:10:30 +0100 <Rembane> Or maybe the tail goes on the other argument... hm...
2024-10-29 12:11:43 +0100 <ash3en> problem is to create these list with take and many. it does not stop on time (when eof is reached or less than 4 byte left)
2024-10-29 12:13:13 +0100 <Rembane> Got it!
2024-10-29 12:13:35 +0100 <Rembane> ash3en: What functions/combinators are you using to get 4 bytes?
2024-10-29 12:13:49 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 260 seconds)
2024-10-29 12:15:02 +0100 <ash3en> i have no problem to figure it out myself with a few hints/best practices : )
2024-10-29 12:15:02 +0100 <ash3en> for now i use "take 4". just want to repeat this using sth like many but with a conditiion -- to maybe lookAhead and count bytes? -- if there are less than 4 left or EOF give back the result. all that with performance in mind
2024-10-29 12:15:31 +0100 <ash3en> Attoparsec's take it is
2024-10-29 12:15:33 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-10-29 12:21:00 +0100zetef(~quassel@5.14.132.142) zetef
2024-10-29 12:21:00 +0100zetef(~quassel@5.14.132.142) (Client Quit)
2024-10-29 12:21:50 +0100 <Rembane> Let me rephrase this to see if I understand it, is the problem that many (take 4) will throw away the last fewer than 4 bytes?
2024-10-29 12:24:17 +0100 <mauke> :t unfoldr (\s -> if BS.length s < 4 then Nothing else Just (BS.splitAt 4 s))
2024-10-29 12:24:18 +0100 <lambdabot> BSC.ByteString -> [BSC.ByteString]
2024-10-29 12:24:42 +0100 <mauke> > unfoldr (\s -> if BS.length s < 4 then Nothing else Just (BS.splitAt 4 s)) "\1\2\3\4\5\6\7"
2024-10-29 12:24:44 +0100 <lambdabot> error:
2024-10-29 12:24:44 +0100 <lambdabot> • Couldn't match expected type ‘BSC.ByteString’
2024-10-29 12:24:44 +0100 <lambdabot> with actual type ‘[Char]’
2024-10-29 12:25:33 +0100 <mauke> > unfoldr (\s -> if BS.length s < 4 then Nothing else Just (BS.splitAt 4 s)) (BSC.pack "\1\2\3\4\5\6\7")
2024-10-29 12:25:34 +0100 <lambdabot> ["\SOH\STX\ETX\EOT"]
2024-10-29 12:26:41 +0100merijn(~merijn@77.242.116.146) merijn
2024-10-29 12:28:12 +0100 <ash3en> Rembane: it results in a "Partial _" this way: many' (take 4)
2024-10-29 12:30:14 +0100 <Rembane> ash3en: Cool, I think mauke has a reasonable solution. :)
2024-10-29 12:30:53 +0100 <mauke> very much not using attoparsec, though
2024-10-29 12:30:57 +0100 <ash3en> Ah! oversaw that! mauke, I will try!
2024-10-29 12:31:14 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 12:32:33 +0100 <ash3en> maybe I don't need attoparsec after all, but I probably will keep using it for convenience now
2024-10-29 12:33:07 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 264 seconds)
2024-10-29 12:33:16 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac
2024-10-29 12:35:42 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 12:45:32 +0100merijn(~merijn@77.242.116.146) merijn
2024-10-29 12:45:34 +0100L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2024-10-29 12:50:31 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 12:52:09 +0100alphazone(~alphazone@2.219.56.221) (Ping timeout: 276 seconds)
2024-10-29 12:55:36 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-10-29 13:00:14 +0100CiaoSen(~Jura@2a05:5800:47e:3300:ca4b:d6ff:fec1:99da) CiaoSen
2024-10-29 13:01:08 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 13:03:20 +0100rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2024-10-29 13:03:50 +0100rvalue(~rvalue@user/rvalue) rvalue
2024-10-29 13:06:43 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 264 seconds)
2024-10-29 13:07:39 +0100Digit(~user@user/digit) Digit
2024-10-29 13:18:52 +0100 <tomsmeding> ash3en: that "Partial" suspiciously sounds like you need to tell attoparsec that your end-of-string is really EOF and there is not more data coming
2024-10-29 13:19:29 +0100 <tomsmeding> ash3en: see the docs for parseOnly, perhaps?
2024-10-29 13:20:01 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 13:20:15 +0100 <tomsmeding> the docs for 'try' are also relevant, and specifically the part where it says that 'try' is unnecessary because attoparsec always backtracks (try = id)
2024-10-29 13:20:22 +0100 <tomsmeding> that is to say, many (take 4) should be exactly the thing you want
2024-10-29 13:20:35 +0100srazkvt(~sarah@user/srazkvt) srazkvt
2024-10-29 13:24:21 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-10-29 13:26:34 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 252 seconds)
2024-10-29 13:27:43 +0100 <ash3en> it is parseOnly indeed!
2024-10-29 13:28:57 +0100 <ash3en> thanks again tomsmeding, mauke and Rembane. better tag geekosaur too just because.
2024-10-29 13:29:21 +0100alphazone(~alphazone@2.219.56.221)
2024-10-29 13:29:47 +0100merijn(~merijn@77.242.116.146) merijn
2024-10-29 13:30:50 +0100SlackCoder(~SlackCode@208.26.70.132) SlackCoder
2024-10-29 13:31:12 +0100SlackCoder(~SlackCode@208.26.70.132) (Client Quit)
2024-10-29 13:37:30 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 13:38:46 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-29 13:49:10 +0100dilaver_(~dilaver_@user/dilaver-:32218) (Quit: The Lounge - https://thelounge.chat)
2024-10-29 13:50:24 +0100petrichor(~znc-user@user/petrichor) petrichor
2024-10-29 13:50:45 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 13:53:50 +0100dilaver_(~dilaver_@user/dilaver-:32218) dilaver_
2024-10-29 13:54:49 +0100xff0x(~xff0x@2405:6580:b080:900:dd4:7391:684:d55b)
2024-10-29 13:55:56 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2024-10-29 13:58:37 +0100madhavanmiui(~madhavanm@2409:40f4:3015:fc89:8000::)
2024-10-29 13:58:40 +0100madhavanmiui(~madhavanm@2409:40f4:3015:fc89:8000::) (Client Quit)
2024-10-29 14:03:22 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 14:08:24 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-10-29 14:09:08 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-29 14:10:11 +0100acidjnk_new(~acidjnk@p200300d6e7283f475911645e2836b524.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2024-10-29 14:13:18 +0100CiaoSen(~Jura@2a05:5800:47e:3300:ca4b:d6ff:fec1:99da) (Ping timeout: 246 seconds)
2024-10-29 14:13:18 +0100stef204(~stef204@user/stef204) stef204
2024-10-29 14:14:39 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 14:14:47 +0100jrm(~jrm@user/jrm) (Ping timeout: 265 seconds)
2024-10-29 14:17:29 +0100paul_j(~user@8.190.187.81.in-addr.arpa) (Read error: Connection reset by peer)
2024-10-29 14:17:44 +0100paul_j(~user@8.190.187.81.in-addr.arpa)
2024-10-29 14:19:14 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-10-29 14:19:34 +0100dyniec(~dyniec@dybiec.info) dyniec
2024-10-29 14:19:47 +0100stef204(~stef204@user/stef204) (Quit: WeeChat 4.2.1)
2024-10-29 14:24:46 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-29 14:25:27 +0100sadmax(~user@64.130.91.66)
2024-10-29 14:25:39 +0100jrm(~jrm@user/jrm) jrm
2024-10-29 14:33:05 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 14:35:49 +0100Digitteknohippie(~user@user/digit) Digit
2024-10-29 14:36:07 +0100Digit(~user@user/digit) (Ping timeout: 264 seconds)
2024-10-29 14:39:35 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 255 seconds)
2024-10-29 14:45:43 +0100acidjnk_new(~acidjnk@p200300d6e7283f47b0bede14811a4453.dip0.t-ipconnect.de)
2024-10-29 14:46:39 +0100sadmax(~user@64.130.91.66) (Ping timeout: 260 seconds)
2024-10-29 15:03:59 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 15:05:25 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2024-10-29 15:05:44 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 15:07:52 +0100weary-traveler(~user@user/user363627) user363627
2024-10-29 15:08:30 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 15:09:55 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 15:10:53 +0100 <probie> What's the lowest effort library for doing a GUI for a board game/card game without any "art" beyond simple polygons? I was considering threepenny or possibly even codeworld, but I was wondering if anything else is popular these days
2024-10-29 15:12:33 +0100 <geekosaur> gloss?
2024-10-29 15:14:17 +0100user363627(~user@user/user363627) user363627
2024-10-29 15:14:40 +0100 <tomsmeding> gloss is low-effort enough that it gets given to students in an introductory haskell course to write a simple game in
2024-10-29 15:14:48 +0100 <tomsmeding> (at our uni)
2024-10-29 15:15:42 +0100 <tomsmeding> probie: ^
2024-10-29 15:16:34 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-10-29 15:16:36 +0100 <probie> In 2012 (well technically 2011), I wrote an assignment for students at my old university using gloss, so it's certainly not unfamiliar territory. I think I'd just assumed it was a dead and stale project by now
2024-10-29 15:16:59 +0100 <tomsmeding> not sure if there's much new development, but it certainly still works
2024-10-29 15:17:30 +0100 <EvanR> new policy, if a hackage package has no updates in 1 year it is removed. Like on google play
2024-10-29 15:17:38 +0100 <EvanR> doesn't matter how working or useful it is
2024-10-29 15:17:58 +0100 <EvanR> update or die
2024-10-29 15:18:08 +0100 <tomsmeding> then I'm going to retroactively make playground pastes expire in a week
2024-10-29 15:18:23 +0100weary-traveler(~user@user/user363627) (Ping timeout: 252 seconds)
2024-10-29 15:19:18 +0100DigitteknohippieDigit
2024-10-29 15:28:51 +0100CrunchyFlakes(~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) (Quit: ZNC 1.8.2 - https://znc.in)
2024-10-29 15:34:01 +0100CrunchyFlakes(~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de)
2024-10-29 15:39:20 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2024-10-29 15:39:49 +0100hgolden_(~hgolden@169.150.203.10) hgolden
2024-10-29 15:42:35 +0100euleritian(~euleritia@dynamic-176-006-130-165.176.6.pool.telefonica.de)
2024-10-29 15:42:43 +0100hgolden__(~hgolden@146.70.173.165) (Ping timeout: 264 seconds)
2024-10-29 15:45:23 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 15:46:34 +0100srazkvt(~sarah@user/srazkvt) (Quit: Konversation terminated!)
2024-10-29 15:46:42 +0100 <zero> ephemeral internet <3
2024-10-29 15:47:12 +0100 <geekosaur> more like the (il)logical conclusion of "move fast, break stuff"
2024-10-29 15:49:15 +0100 <zero> this tangentially reminds me of the Slow Web movement
2024-10-29 15:49:26 +0100 <merijn> To be fair, gloss targets the extremely brittle and fast evolving GLUT and OpenGL APIs ;)
2024-10-29 15:49:37 +0100 <merijn> So clearly those would break all the time!
2024-10-29 15:49:51 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 15:50:12 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en)
2024-10-29 15:54:08 +0100sadmax(~user@64.130.91.66)
2024-10-29 15:54:40 +0100L29Ah(~L29Ah@wikipedia/L29Ah) ()
2024-10-29 15:56:27 +0100euleritian(~euleritia@dynamic-176-006-130-165.176.6.pool.telefonica.de) (Ping timeout: 252 seconds)
2024-10-29 15:56:38 +0100 <zero> gloss still works great, but it's somewhat limited. and 2D only
2024-10-29 16:01:20 +0100L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2024-10-29 16:05:01 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 16:10:12 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-10-29 16:13:11 +0100AlexNoo_(~AlexNoo@178.34.150.252)
2024-10-29 16:15:53 +0100AlexZenon(~alzenon@178.34.150.78) (Ping timeout: 255 seconds)
2024-10-29 16:16:47 +0100AlexNoo(~AlexNoo@178.34.150.78) (Ping timeout: 255 seconds)
2024-10-29 16:24:07 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 16:25:35 +0100AlexZenon(~alzenon@178.34.150.252)
2024-10-29 16:29:54 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 276 seconds)
2024-10-29 16:30:16 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 252 seconds)
2024-10-29 16:30:57 +0100merijn(~merijn@77.242.116.146) merijn
2024-10-29 16:36:08 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-29 16:37:29 +0100AlexNoo_AlexNoo
2024-10-29 16:38:23 +0100Digit(~user@user/digit) (Ping timeout: 255 seconds)
2024-10-29 16:40:48 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-29 16:42:15 +0100AlexZenon(~alzenon@178.34.150.252) (Ping timeout: 276 seconds)
2024-10-29 16:42:46 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 16:46:37 +0100AlexZenon(~alzenon@178.34.150.252)
2024-10-29 16:48:14 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 16:51:24 +0100euleritian(~euleritia@dynamic-176-006-130-165.176.6.pool.telefonica.de)
2024-10-29 16:53:13 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-29 16:53:39 +0100Digit(~user@user/digit) Digit
2024-10-29 16:59:37 +0100rosco(~rosco@60.53.5.183) (Quit: Lost terminal)
2024-10-29 17:00:04 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-10-29 17:00:53 +0100AlexZenon(~alzenon@178.34.150.252) (Ping timeout: 248 seconds)
2024-10-29 17:03:30 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 17:05:36 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2)
2024-10-29 17:06:17 +0100AlexZenon(~alzenon@178.34.150.252)
2024-10-29 17:10:57 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en)
2024-10-29 17:11:48 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-10-29 17:21:38 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 245 seconds)
2024-10-29 17:23:42 +0100Katarushisu(~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) (Ping timeout: 246 seconds)
2024-10-29 17:23:45 +0100Katarushisu3(~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) Katarushisu
2024-10-29 17:24:55 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-29 17:26:35 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 17:31:39 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 276 seconds)
2024-10-29 17:39:03 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh
2024-10-29 17:55:18 +0100euleritian(~euleritia@dynamic-176-006-130-165.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-10-29 17:55:37 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 17:58:55 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 18:00:05 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2024-10-29 18:00:38 +0100euleritian(~euleritia@dynamic-176-007-141-251.176.7.pool.telefonica.de)
2024-10-29 18:01:54 +0100euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-10-29 18:05:22 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-10-29 18:07:04 +0100euleritian(~euleritia@dynamic-176-007-141-251.176.7.pool.telefonica.de) (Ping timeout: 252 seconds)
2024-10-29 18:09:15 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 252 seconds)
2024-10-29 18:09:36 +0100gmg(~user@user/gehmehgeh) (Ping timeout: 260 seconds)
2024-10-29 18:11:03 +0100euphores(~SASL_euph@user/euphores) euphores
2024-10-29 18:11:34 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2024-10-29 18:14:00 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2024-10-29 18:16:12 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 246 seconds)
2024-10-29 18:16:12 +0100ljdarj1ljdarj
2024-10-29 18:17:42 +0100vglfr(~vglfr@c-73-250-25-113.hsd1.md.comcast.net) (Ping timeout: 252 seconds)
2024-10-29 18:18:30 +0100vglfr(~vglfr@2607:fb90:ea0e:4092:ac39:c391:8228:99c1) vglfr
2024-10-29 18:18:31 +0100 <haskellbridge> <maralorn> I am trying to associate a GADT with a type class. i.e. "class MyClass a where data MyAssociatedGADT a b".
2024-10-29 18:18:33 +0100 <haskellbridge> Does anyone know how I can make instances Proof that "b" fullfills a a certain constraint. e.g. Show?
2024-10-29 18:21:55 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-10-29 18:22:00 +0100 <haskellbridge> <maralorn> Ah, got it.
2024-10-29 18:22:31 +0100 <haskellbridge> <maralorn> proofJSON :: ((ToJSON b, FromJSON b) => r) -> MyAssociatedGADT a b -> r
2024-10-29 18:22:51 +0100vglfr(~vglfr@2607:fb90:ea0e:4092:ac39:c391:8228:99c1) (Ping timeout: 246 seconds)
2024-10-29 18:23:36 +0100chele(~chele@user/chele) (Remote host closed the connection)
2024-10-29 18:23:39 +0100vglfr(~vglfr@2607:fb91:848:44ab:ad2:e57:e15b:944b) vglfr
2024-10-29 18:25:30 +0100vglfr(~vglfr@2607:fb91:848:44ab:ad2:e57:e15b:944b) (Read error: Connection reset by peer)
2024-10-29 18:28:56 +0100euleritian(~euleritia@dynamic-176-003-086-054.176.3.pool.telefonica.de)
2024-10-29 18:35:17 +0100euleritian(~euleritia@dynamic-176-003-086-054.176.3.pool.telefonica.de) (Ping timeout: 248 seconds)
2024-10-29 18:35:51 +0100xal(~xal@mx1.xal.systems) (Quit: bye)
2024-10-29 18:36:10 +0100vglfr(~vglfr@c-73-250-25-113.hsd1.md.comcast.net) vglfr
2024-10-29 18:36:39 +0100euleritian(~euleritia@dynamic-176-003-086-054.176.3.pool.telefonica.de)
2024-10-29 18:38:44 +0100euleritian(~euleritia@dynamic-176-003-086-054.176.3.pool.telefonica.de) (Read error: Connection reset by peer)
2024-10-29 18:39:12 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 18:42:24 +0100spew(~spew@201.141.99.170) spew
2024-10-29 18:43:54 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2024-10-29 18:46:47 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-10-29 18:47:46 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2024-10-29 18:47:53 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 18:53:28 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 18:59:41 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 255 seconds)
2024-10-29 19:02:51 +0100sawilagar(~sawilagar@user/sawilagar) (Remote host closed the connection)
2024-10-29 19:04:11 +0100sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-10-29 19:07:48 +0100RedFlamingos(~RedFlamin@user/RedFlamingos) RedFlamingos
2024-10-29 19:11:19 +0100wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2024-10-29 19:13:52 +0100ft(~ft@p4fc2a216.dip0.t-ipconnect.de) ft
2024-10-29 19:22:06 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-10-29 19:24:19 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 19:24:42 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 19:25:24 +0100vglfr(~vglfr@c-73-250-25-113.hsd1.md.comcast.net) (Ping timeout: 272 seconds)
2024-10-29 19:25:40 +0100vglfr(~vglfr@2607:fb91:848:44ab:ad2:e57:e15b:944b) vglfr
2024-10-29 19:28:35 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-10-29 19:31:48 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds)
2024-10-29 19:32:12 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 19:32:49 +0100L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2024-10-29 19:34:30 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 276 seconds)
2024-10-29 19:39:41 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 19:46:11 +0100Nachtgespenst(~user@user/siracusa) (Quit: Bye!)
2024-10-29 19:46:38 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-10-29 19:51:13 +0100user363627(~user@user/user363627) (Remote host closed the connection)
2024-10-29 19:52:53 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds)
2024-10-29 19:54:31 +0100euleritian(~euleritia@dynamic-176-003-086-054.176.3.pool.telefonica.de)
2024-10-29 19:57:45 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 19:59:42 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-29 20:00:05 +0100caconym(~caconym@user/caconym) (Quit: bye)
2024-10-29 20:00:41 +0100caconym(~caconym@user/caconym) caconym
2024-10-29 20:01:20 +0100euleritian(~euleritia@dynamic-176-003-086-054.176.3.pool.telefonica.de) (Ping timeout: 255 seconds)
2024-10-29 20:01:48 +0100vglfr(~vglfr@2607:fb91:848:44ab:ad2:e57:e15b:944b) (Ping timeout: 276 seconds)
2024-10-29 20:02:15 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-29 20:02:55 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 20:03:23 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-29 20:07:13 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 20:10:15 +0100mrmr155334346318(~mrmr@user/mrmr) mrmr
2024-10-29 20:12:33 +0100SlackCoder(~SlackCode@64-94-63-8.ip.weststar.net.ky) SlackCoder
2024-10-29 20:12:50 +0100weary-traveler(~user@user/user363627) user363627
2024-10-29 20:13:54 +0100kolay(~kolay@79.165.22.215)
2024-10-29 20:14:04 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-10-29 20:14:09 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-29 20:19:25 +0100vglfr(~vglfr@c-73-250-25-113.hsd1.md.comcast.net) vglfr
2024-10-29 20:24:14 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en)
2024-10-29 20:25:12 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 20:29:18 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-10-29 20:29:35 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Client Quit)
2024-10-29 20:29:59 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 20:32:22 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-10-29 20:34:08 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 245 seconds)
2024-10-29 20:36:04 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-10-29 20:37:00 +0100Everything(~Everythin@178-133-213-22.mobile.vf-ua.net)
2024-10-29 20:47:01 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 20:47:23 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 20:49:39 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-29 20:49:52 +0100kolay(~kolay@79.165.22.215) (Remote host closed the connection)
2024-10-29 20:51:17 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-29 20:51:42 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 20:54:33 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-29 20:55:58 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 272 seconds)
2024-10-29 21:00:01 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2024-10-29 21:01:01 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2024-10-29 21:01:11 +0100euleritian(~euleritia@dynamic-176-003-086-054.176.3.pool.telefonica.de)
2024-10-29 21:02:23 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 21:07:27 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-10-29 21:08:17 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 21:09:51 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 21:12:55 +0100zerozzz
2024-10-29 21:15:15 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-10-29 21:16:15 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 265 seconds)
2024-10-29 21:17:59 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-10-29 21:18:33 +0100spew(~spew@201.141.99.170) (Ping timeout: 246 seconds)
2024-10-29 21:21:43 +0100mantraofpie_(~mantraofp@user/mantraofpie) (Remote host closed the connection)
2024-10-29 21:22:06 +0100mantraofpie(~mantraofp@user/mantraofpie) mantraofpie
2024-10-29 21:22:24 +0100 <tomsmeding> maralorn: I think I usually see those kinds of functions flipped
2024-10-29 21:22:32 +0100manolops(~mafiabot@84.232.148.69)
2024-10-29 21:22:34 +0100 <tomsmeding> because then it more clearly becomes CPS
2024-10-29 21:23:06 +0100 <tomsmeding> essentially you're trying to write "proofJSON :: MyAssociatedGADT a b -> (ToJSON b, FromJSON b)", but because Haskell won't let you do that, you CPS it to "flip of what you wrote"
2024-10-29 21:23:43 +0100 <tomsmeding> alternatively you can write `data Dict c where Dict :: c => Dict c` and have `proofJSON :: MyAssociatedGADT a b -> (Dict (ToJSON b), Dict (FromJSON b))`
2024-10-29 21:24:14 +0100manolops(~mafiabot@84.232.148.69) (Client Quit)
2024-10-29 21:24:21 +0100 <tomsmeding> then pattern matching on such a Dict value reveals the type class evidence
2024-10-29 21:26:02 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 21:29:58 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 21:30:28 +0100habib(~habib@185.195.232.169) (Quit: Textual IRC Client: www.textualapp.com)
2024-10-29 21:30:34 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-29 21:32:06 +0100simendsjo(~user@84.211.91.108) simendsjo
2024-10-29 21:41:24 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 21:46:01 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-10-29 21:46:12 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2024-10-29 21:50:12 +0100EvanR(~EvanR@user/evanr) (Quit: Leaving)
2024-10-29 21:54:24 +0100lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 252 seconds)
2024-10-29 21:56:46 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 21:58:19 +0100son0p(~ff@186.119.84.216) (Ping timeout: 260 seconds)
2024-10-29 22:00:51 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 22:01:22 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-29 22:01:31 +0100alphazone_(~alphazone@2.219.56.221)
2024-10-29 22:04:32 +0100euleritian(~euleritia@dynamic-176-003-086-054.176.3.pool.telefonica.de) (Read error: Connection reset by peer)
2024-10-29 22:04:53 +0100alphazone(~alphazone@2.219.56.221) (Ping timeout: 248 seconds)
2024-10-29 22:05:04 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 22:06:08 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 22:06:08 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-10-29 22:06:28 +0100petrichor(~znc-user@user/petrichor) (Read error: Connection reset by peer)
2024-10-29 22:06:42 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2024-10-29 22:06:47 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-10-29 22:09:14 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 22:09:28 +0100petrichor(~znc-user@user/petrichor) petrichor
2024-10-29 22:11:59 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 22:15:57 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-29 22:16:12 +0100SlackCoder(~SlackCode@64-94-63-8.ip.weststar.net.ky) (Quit: Leaving)
2024-10-29 22:17:49 +0100hgolden__(~hgolden@204.152.216.122) hgolden
2024-10-29 22:20:21 +0100hgolden_(~hgolden@169.150.203.10) (Ping timeout: 252 seconds)
2024-10-29 22:23:39 +0100simendsjo(~user@84.211.91.108) (Ping timeout: 252 seconds)
2024-10-29 22:27:17 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 22:27:34 +0100 <haskellbridge> <maralorn> tomsmeding: Yeah, thanks.
2024-10-29 22:31:29 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-29 22:32:23 +0100BolzmannPain(~BolzmannP@user/BolzmannPain) BolzmannPain
2024-10-29 22:34:23 +0100 <haskellbridge> <maralorn> Opinions please: Associated Type Families vs. FunDeps?
2024-10-29 22:35:33 +0100 <haskellbridge> <maralorn> I have now basically found three largely equivalent type class setups and can’t decide which one is best.
2024-10-29 22:36:21 +0100 <haskellbridge> <maralorn> It’s basically "MyRelation a b | a -> b" vs "MyRelation a where RelatedTo a"
2024-10-29 22:36:33 +0100 <tomsmeding> opinion: ATFs are a bit neater becaues it more explicitly defines the functional relation as an actual function
2024-10-29 22:36:36 +0100 <haskellbridge> <maralorn> - where type RelatedTo a
2024-10-29 22:37:11 +0100 <geekosaur> I think it's up to what you're more familar or comfortable with; they should operate identically
2024-10-29 22:37:19 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 264 seconds)
2024-10-29 22:37:33 +0100 <tomsmeding> it is more verbose sometimes, though, for having to write out the name (but with fundeps you have to write out the type parameters even if you don't use them)
2024-10-29 22:38:24 +0100 <tomsmeding> also with fundeps there's a clear link from the type variable (in some type signature) back to the class; with ATFs, you have to go-to definition the ATF name to find out it's related to the class
2024-10-29 22:42:38 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 22:46:28 +0100 <kaol> I've used fundeps. I confess that I just tried out combinations blindly until my code compiled.
2024-10-29 22:49:14 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-10-29 22:50:12 +0100 <monochrom> "Why not both?" >:)
2024-10-29 22:54:23 +0100 <kaol> Are there examples of multi parameter type classes where different fundep definitions can make sense? I'm not sure if what I'm asking is a sensible question even. From my shotgunning I got a feeling that there was only one right solution that I just needed to guess and that left me wondering if GHC should be able to magically do it for me.
2024-10-29 22:54:52 +0100 <tomsmeding> kaol: ghc might be able to magically guess it given your instances
2024-10-29 22:54:57 +0100 <tomsmeding> but instances might be defined far from the class
2024-10-29 22:55:17 +0100hc(~hc@mail.hce.li) (Remote host closed the connection)
2024-10-29 22:55:37 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 22:56:25 +0100spew(~spew@201.141.99.170) spew
2024-10-29 22:56:35 +0100 <monochrom> It's exactly the same as RDBMS people figuring out what functional dependencies exist in an application domain.
2024-10-29 22:58:12 +0100 <kaol> Maybe I should have a second look at fundeps some time. Perhaps I'd catch on what they are about this time.
2024-10-29 22:59:02 +0100 <monochrom> For example if I say "I have student IDs and student names", it is "obvious" that names are a function of IDs. But PostgresQL cannot infer that automatically. GHC cannot infer that automatically. LLMs is coming close to inferring that automatically, but current you don't trust them, do you?
2024-10-29 22:59:10 +0100RedFlamingos(~RedFlamin@user/RedFlamingos) (Remote host closed the connection)
2024-10-29 23:00:02 +0100 <mauke> kaol: class Convert a b where { convert :: a -> b }
2024-10-29 23:00:03 +0100 <tomsmeding> kaol: if your class has parameters a b c, then the fundep `a -> b` is valid if given a certain 'a', all instances have the same 'b'
2024-10-29 23:00:32 +0100 <kaol> It's 0:00 here, I didn't mean now.
2024-10-29 23:00:36 +0100 <tomsmeding> i.e. you could have rewritten your class to having parameters a c, and have an associated type family `type BForA a`, and then write `BForA a` instead of `b` everywhere
2024-10-29 23:00:46 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 23:01:18 +0100 <kaol> Thanks anyway but I just can't.
2024-10-29 23:01:24 +0100 <tomsmeding> kaol: now people complain the channel is too quiet, now they complain that we're too helpful!
2024-10-29 23:01:29 +0100 <tomsmeding> ;)
2024-10-29 23:01:34 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 23:01:45 +0100hc(~hc@mail.hce.li) hc
2024-10-29 23:01:50 +0100 <monochrom> It's a function of time!
2024-10-29 23:01:51 +0100 <mauke> hey, you asked for an example :-)
2024-10-29 23:02:26 +0100 <tomsmeding> mauke: I know of a library that defines something akin to your Convert but which does _not_ have a functional dependency
2024-10-29 23:02:48 +0100 <tomsmeding> (and could not have one)
2024-10-29 23:02:49 +0100michalz(~michalz@185.246.207.221) (Read error: Connection reset by peer)
2024-10-29 23:03:07 +0100michalz(~michalz@185.246.207.203)
2024-10-29 23:03:16 +0100 <mauke> yes
2024-10-29 23:03:28 +0100 <mauke> you can imagine no fundeps, or a -> b, or b -> a
2024-10-29 23:03:36 +0100 <tomsmeding> b -> a would be odd
2024-10-29 23:04:31 +0100 <mauke> that's Read, basically
2024-10-29 23:04:49 +0100 <mauke> a -> b is Show
2024-10-29 23:05:05 +0100 <tomsmeding> well, yes, but those functional dependencies are kind of trivial
2024-10-29 23:06:24 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-10-29 23:07:49 +0100spew(~spew@201.141.99.170) (Ping timeout: 248 seconds)
2024-10-29 23:09:37 +0100spew(~spew@201.141.99.170) spew
2024-10-29 23:13:24 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 23:15:43 +0100ubert(~Thunderbi@178.165.189.55.wireless.dyn.drei.com) (Ping timeout: 264 seconds)
2024-10-29 23:19:38 +0100emmanuelux_(~emmanuelu@user/emmanuelux) emmanuelux
2024-10-29 23:20:10 +0100emmanuelux(~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer)
2024-10-29 23:20:38 +0100emmanuelux_(~emmanuelu@user/emmanuelux) (Remote host closed the connection)
2024-10-29 23:21:34 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla
2024-10-29 23:22:34 +0100habib(~habib@185.195.232.169) habib
2024-10-29 23:27:14 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 23:27:53 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-10-29 23:31:33 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-29 23:32:09 +0100random-jellyfish(~developer@user/random-jellyfish) random-jellyfish
2024-10-29 23:34:25 +0100BolzmannPain(~BolzmannP@user/BolzmannPain) (Quit: Client closed)
2024-10-29 23:40:04 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2024-10-29 23:40:51 +0100Nachtgespenst(~user@user/siracusa) siracusa
2024-10-29 23:42:36 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-10-29 23:43:24 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
2024-10-29 23:43:24 +0100ljdarj1ljdarj
2024-10-29 23:47:25 +0100Sgeo(~Sgeo@user/sgeo) Sgeo
2024-10-29 23:48:43 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-10-29 23:49:27 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2024-10-29 23:50:12 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-29 23:53:05 +0100Lears(~Leary@user/Leary/x-0910699) Leary
2024-10-29 23:54:18 +0100noctux(~noctux@user/noctux) (Ping timeout: 265 seconds)
2024-10-29 23:54:19 +0100pierrot(~pi@user/pierrot) (Ping timeout: 265 seconds)
2024-10-29 23:54:19 +0100flocks(~flocks@134.122.90.60) (Ping timeout: 265 seconds)
2024-10-29 23:54:25 +0100m5zs7k_(aquares@web10.mydevil.net) m5zs7k
2024-10-29 23:54:46 +0100pierrot(~pi@user/pierrot) pierrot
2024-10-29 23:54:48 +0100sm(~znc@plaintextaccounting/sm) (Ping timeout: 265 seconds)
2024-10-29 23:54:48 +0100doyougnu(~doyougnu@syn-045-046-170-068.res.spectrum.com) (Ping timeout: 265 seconds)
2024-10-29 23:55:16 +0100Leary(~Leary@user/Leary/x-0910699) (Ping timeout: 265 seconds)
2024-10-29 23:55:17 +0100m5zs7k(aquares@web10.mydevil.net) (Ping timeout: 265 seconds)
2024-10-29 23:55:39 +0100doyougnu(~doyougnu@syn-045-046-170-068.res.spectrum.com) doyougnu
2024-10-29 23:55:45 +0100gentauro(~gentauro@user/gentauro) (Ping timeout: 265 seconds)
2024-10-29 23:55:59 +0100gentauro(~gentauro@user/gentauro) gentauro
2024-10-29 23:56:02 +0100Square(~Square@user/square) Square
2024-10-29 23:56:43 +0100ubert(~Thunderbi@178.165.189.55.wireless.dyn.drei.com) ubert
2024-10-29 23:56:48 +0100sm(~znc@plaintextaccounting/sm) sm
2024-10-29 23:56:49 +0100tt1231097832435(~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) (Quit: Ping timeout (120 seconds))
2024-10-29 23:57:12 +0100tt1231097832435(~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) tt1231
2024-10-29 23:57:49 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-29 23:59:10 +0100flocks(~flocks@134.122.90.60) flocks
2024-10-29 23:59:49 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn