2024-10-29 00:00:44 +0100 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 260 seconds) |
2024-10-29 00:00:55 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 00:01:54 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 276 seconds) |
2024-10-29 00:05:57 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 00:07:14 +0100 | sinbad | (~sinbad@user/sinbad) () |
2024-10-29 00:07:59 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-10-29 00:12:40 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
2024-10-29 00:13:41 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2024-10-29 00:14:10 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 00:17:39 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 265 seconds) |
2024-10-29 00:20:48 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-29 00:31:35 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 00:36:19 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-10-29 00:37:34 +0100 | ljdarj1 | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-29 00:40:00 +0100 | Nachtgespenst | (~user@user/siracusa) siracusa |
2024-10-29 00:40:01 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds) |
2024-10-29 00:40:02 +0100 | ljdarj1 | ljdarj |
2024-10-29 00:40:57 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 246 seconds) |
2024-10-29 00:42:03 +0100 | Noinia | (~Frank@77-162-168-71.fixed.kpn.net) (Ping timeout: 245 seconds) |
2024-10-29 00:45:00 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2024-10-29 00:46:57 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 00:51:17 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-29 00:55:30 +0100 | Everything | (~Everythin@178-133-153-185.mobile.vf-ua.net) (Quit: leaving) |
2024-10-29 00:56:18 +0100 | hgolden_ | (~hgolden@146.70.173.165) hgolden |
2024-10-29 00:58:47 +0100 | hgolden__ | (~hgolden@23.162.40.110) (Ping timeout: 244 seconds) |
2024-10-29 01:01:49 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 01:02:20 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 01:05:05 +0100 | sadmax | (~user@64.130.91.66) (Ping timeout: 248 seconds) |
2024-10-29 01:05:37 +0100 | acidjnk_new | (~acidjnk@p200300d6e72cfb16a87636e44c055c5c.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
2024-10-29 01:05:47 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2024-10-29 01:06:16 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 01:06:38 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-29 01:08:34 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Client Quit) |
2024-10-29 01:08:43 +0100 | werneta | (~werneta@syn-071-083-160-242.res.spectrum.com) werneta |
2024-10-29 01:11:30 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
2024-10-29 01:15:10 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 01:19:23 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2024-10-29 01:19:23 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
2024-10-29 01:19:33 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
2024-10-29 01:20:09 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-10-29 01:21:09 +0100 | califax | (~califax@user/califx) (Remote host closed the connection) |
2024-10-29 01:21:34 +0100 | califax | (~califax@user/califx) califx |
2024-10-29 01:29:58 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
2024-10-29 01:32:36 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 01:37:02 +0100 | tv | (~tv@user/tv) (Quit: derp) |
2024-10-29 01:37:03 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-29 01:37:27 +0100 | xff0x | (~xff0x@2405:6580:b080:900:b00a:f648:5747:c396) (Ping timeout: 276 seconds) |
2024-10-29 01:46:20 +0100 | tv | (~tv@user/tv) tv |
2024-10-29 01:47:58 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 01:48:35 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 01:52:50 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 01:54:33 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
2024-10-29 02:01:42 +0100 | user363627 | (~user@user/user363627) user363627 |
2024-10-29 02:03:40 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 02:03:50 +0100 | jumper149 | (~jumper149@base.felixspringer.xyz) (Quit: WeeChat 4.4.2) |
2024-10-29 02:06:30 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 02:11:14 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-10-29 02:21:53 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 02:22:56 +0100 | gmg | (~user@user/gehmehgeh) (Remote host closed the connection) |
2024-10-29 02:23:39 +0100 | gmg | (~user@user/gehmehgeh) gehmehgeh |
2024-10-29 02:23:50 +0100 | hgolden__ | (~hgolden@204.152.216.122) hgolden |
2024-10-29 02:23:53 +0100 | catties | CatGPT |
2024-10-29 02:26:18 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-29 02:26:42 +0100 | hgolden_ | (~hgolden@146.70.173.165) (Ping timeout: 265 seconds) |
2024-10-29 02:28:09 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2024-10-29 02:28:25 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
2024-10-29 02:31:35 +0100 | yaroot | (~yaroot@2400:4052:ac0:d901:1cf4:2aff:fe51:c04c) (Remote host closed the connection) |
2024-10-29 02:32:18 +0100 | yaroot | (~yaroot@2400:4052:ac0:d901:1cf4:2aff:fe51:c04c) yaroot |
2024-10-29 02:37:16 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 02:41:35 +0100 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
2024-10-29 02:42:07 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds) |
2024-10-29 02:47:59 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 260 seconds) |
2024-10-29 02:52:38 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 02:55:13 +0100 | jc_nn | (~jc@2803:c180:2003:5c33:6f77:c169:b2b:789f) (Quit: Leaving) |
2024-10-29 02:57:00 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-29 02:59:43 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2024-10-29 03:06:24 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Remote host closed the connection) |
2024-10-29 03:07:17 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 03:07:59 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 03:09:39 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
2024-10-29 03:11:33 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds) |
2024-10-29 03:12:30 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-10-29 03:14:37 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2024-10-29 03:14:51 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
2024-10-29 03:14:58 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
2024-10-29 03:15:12 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
2024-10-29 03:23:23 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 03:24:22 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 03:29:58 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 245 seconds) |
2024-10-29 03:29:59 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
2024-10-29 03:30:36 +0100 | mantraofpie | (~mantraofp@user/mantraofpie) (Remote host closed the connection) |
2024-10-29 03:30:58 +0100 | mantraofpie | (~mantraofp@user/mantraofpie) mantraofpie |
2024-10-29 03:37:49 +0100 | hgolden_ | (~hgolden@204.152.216.106) hgolden |
2024-10-29 03:41:14 +0100 | hgolden__ | (~hgolden@204.152.216.122) (Ping timeout: 260 seconds) |
2024-10-29 03:41:26 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 03:45:46 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-29 03:56:48 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 04:00:30 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 04:01:10 +0100 | merijn | (~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 +0100 | haritz | (~hrtz@user/haritz) (Ping timeout: 248 seconds) |
2024-10-29 04:12:11 +0100 | merijn | (~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 +0100 | haritz | (~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk) |
2024-10-29 04:14:04 +0100 | haritz | (~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk) (Changing host) |
2024-10-29 04:14:04 +0100 | haritz | (~hrtz@user/haritz) haritz |
2024-10-29 04:14:44 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 04:16:34 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-29 04:27:33 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 04:28:04 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 04:31:58 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-29 04:40:30 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 04:42:57 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 04:46:56 +0100 | gmg | (~user@user/gehmehgeh) (Ping timeout: 260 seconds) |
2024-10-29 04:47:33 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-29 04:49:14 +0100 | gmg | (~user@user/gehmehgeh) gehmehgeh |
2024-10-29 04:53:39 +0100 | AlexZenon | (~alzenon@178.34.161.119) (Ping timeout: 246 seconds) |
2024-10-29 04:54:36 +0100 | AlexNoo | (~AlexNoo@178.34.161.119) (Ping timeout: 265 seconds) |
2024-10-29 04:54:54 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds) |
2024-10-29 04:56:51 +0100 | spew | (~spew@155.133.15.121) (Quit: spew) |
2024-10-29 04:58:19 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 05:00:04 +0100 | AlexNoo | (~AlexNoo@178.34.150.78) |
2024-10-29 05:01:32 +0100 | td_ | (~td@i53870902.versanet.de) (Ping timeout: 272 seconds) |
2024-10-29 05:02:45 +0100 | td_ | (~td@i5387091D.versanet.de) td_ |
2024-10-29 05:03:19 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-10-29 05:06:42 +0100 | AlexZenon | (~alzenon@178.34.150.78) |
2024-10-29 05:09:13 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 05:11:59 +0100 | AlexNoo_ | (~AlexNoo@178.34.150.78) |
2024-10-29 05:13:45 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 05:13:52 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 05:15:14 +0100 | AlexNoo | (~AlexNoo@178.34.150.78) (Ping timeout: 252 seconds) |
2024-10-29 05:18:31 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-29 05:30:32 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 05:32:03 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 245 seconds) |
2024-10-29 05:32:15 +0100 | Nixkernal | (~Nixkernal@52.131.63.188.dynamic.cust.swisscom.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2024-10-29 05:32:23 +0100 | alphazone | (~alphazone@2.219.56.221) (Ping timeout: 255 seconds) |
2024-10-29 05:33:00 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod |
2024-10-29 05:33:51 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Ping timeout: 252 seconds) |
2024-10-29 05:34:57 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-10-29 05:40:09 +0100 | AlexZenon | (~alzenon@178.34.150.78) (Ping timeout: 252 seconds) |
2024-10-29 05:40:46 +0100 | AlexNoo | (~AlexNoo@178.34.150.78) |
2024-10-29 05:41:00 +0100 | AlexNoo_ | (~AlexNoo@178.34.150.78) (Ping timeout: 265 seconds) |
2024-10-29 05:43:16 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 05:45:55 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 05:50:26 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-29 05:50:43 +0100 | AlexZenon | (~alzenon@178.34.150.78) |
2024-10-29 05:51:32 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 05:56:15 +0100 | user363627 | (~user@user/user363627) (Remote host closed the connection) |
2024-10-29 06:01:15 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 06:08:30 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-10-29 06:19:06 +0100 | rosco | (~rosco@60.53.5.183) rosco |
2024-10-29 06:19:18 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 06:21:01 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 06:23:54 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-29 06:25:16 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 06:26:46 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 06:30:01 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2024-10-29 06:34:21 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 06:34:38 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 06:39:09 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-10-29 06:43:05 +0100 | michalz | (~michalz@185.246.207.221) |
2024-10-29 06:50:02 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 06:54:24 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-10-29 07:04:08 +0100 | kaskal | (~kaskal@213-225-13-57.nat.highway.a1.net) (Ping timeout: 245 seconds) |
2024-10-29 07:05:24 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 07:10:02 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
2024-10-29 07:13:30 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds) |
2024-10-29 07:16:10 +0100 | euleritian | (~euleritia@dynamic-176-002-002-253.176.2.pool.telefonica.de) |
2024-10-29 07:19:57 +0100 | euleritian | (~euleritia@dynamic-176-002-002-253.176.2.pool.telefonica.de) (Read error: Connection reset by peer) |
2024-10-29 07:20:47 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 07:20:56 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
2024-10-29 07:21:05 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 07:25:23 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
2024-10-29 07:27:03 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds) |
2024-10-29 07:27:49 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 265 seconds) |
2024-10-29 07:34:43 +0100 | euleritian | (~euleritia@176.2.145.170) |
2024-10-29 07:36:10 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 07:42:57 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 07:42:59 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-29 07:50:19 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 07:55:25 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 07:56:00 +0100 | CiaoSen | (~Jura@2a05:5800:47e:3300:ca4b:d6ff:fec1:99da) CiaoSen |
2024-10-29 07:59:04 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-10-29 08:00:01 +0100 | caconym | (~caconym@user/caconym) (Quit: bye) |
2024-10-29 08:00:39 +0100 | caconym | (~caconym@user/caconym) caconym |
2024-10-29 08:03:13 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-29 08:03:22 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 08:06:26 +0100 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 248 seconds) |
2024-10-29 08:08:28 +0100 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
2024-10-29 08:14:17 +0100 | euleritian | (~euleritia@176.2.145.170) (Read error: Connection reset by peer) |
2024-10-29 08:14:36 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
2024-10-29 08:15:08 +0100 | Noinia | (~Frank@77-162-168-71.fixed.kpn.net) |
2024-10-29 08:17:24 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 08:18:18 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-10-29 08:20:16 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f47c4b62c6ffe9eb9d8.dip0.t-ipconnect.de) |
2024-10-29 08:21:08 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds) |
2024-10-29 08:21:42 +0100 | euleritian | (~euleritia@dynamic-176-006-134-175.176.6.pool.telefonica.de) |
2024-10-29 08:21:54 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-10-29 08:26:15 +0100 | alphazone | (~alphazone@2.219.56.221) |
2024-10-29 08:26:44 +0100 | euleritian | (~euleritia@dynamic-176-006-134-175.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
2024-10-29 08:27:02 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
2024-10-29 08:27:03 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-10-29 08:27:22 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2024-10-29 08:27:39 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 08:32:30 +0100 | AlexZenon | (~alzenon@178.34.150.78) (Ping timeout: 252 seconds) |
2024-10-29 08:32:46 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 08:36:30 +0100 | AlexZenon | (~alzenon@178.34.150.78) |
2024-10-29 08:36:31 +0100 | werneta | (~werneta@syn-071-083-160-242.res.spectrum.com) (Remote host closed the connection) |
2024-10-29 08:38:00 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-10-29 08:40:10 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 08:40:21 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) kuribas |
2024-10-29 08:43:08 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) Lord_of_Life |
2024-10-29 08:44:24 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds) |
2024-10-29 08:44:29 +0100 | Lord_of_Life_ | Lord_of_Life |
2024-10-29 08:45:44 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
2024-10-29 08:48:09 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 08:52:16 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2024-10-29 08:52:55 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds) |
2024-10-29 08:56:25 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
2024-10-29 08:59:29 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 09:03:15 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 09:04:05 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds) |
2024-10-29 09:06:30 +0100 | econo_ | (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
2024-10-29 09:07:49 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-29 09:08:01 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) sord937 |
2024-10-29 09:08:46 +0100 | ft | (~ft@p4fc2a216.dip0.t-ipconnect.de) (Quit: leaving) |
2024-10-29 09:09:39 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f47c4b62c6ffe9eb9d8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2024-10-29 09:15:36 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f47c4b62c6ffe9eb9d8.dip0.t-ipconnect.de) |
2024-10-29 09:16:04 +0100 | Square2 | (~Square4@user/square) Square |
2024-10-29 09:17:12 +0100 | jespada | (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) jespada |
2024-10-29 09:17:42 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 09:18:33 +0100 | alp | (~alp@2001:861:e3d6:8f80:f60c:ddc9:c66e:3f2c) |
2024-10-29 09:23:29 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
2024-10-29 09:26:25 +0100 | mantraofpie_ | (~mantraofp@user/mantraofpie) mantraofpie |
2024-10-29 09:27:31 +0100 | mantraofpie | (~mantraofp@user/mantraofpie) (Ping timeout: 260 seconds) |
2024-10-29 09:29:05 +0100 | rosco | (~rosco@60.53.5.183) (Quit: Lost terminal) |
2024-10-29 09:37:03 +0100 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-29 09:37:34 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 09:43:02 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 255 seconds) |
2024-10-29 09:44:01 +0100 | chele | (~chele@user/chele) chele |
2024-10-29 09:52:33 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f47c4b62c6ffe9eb9d8.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2024-10-29 09:57:05 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 10:00:47 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2024-10-29 10:01:59 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
2024-10-29 10:03:48 +0100 | xff0x | (~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 +0100 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
2024-10-29 10:14:56 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 10:19:27 +0100 | laxmik | (~laxmik@ip-109-40-177-194.web.vodafone.de) laxmik |
2024-10-29 10:20:18 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 10:21:13 +0100 | laxmik | (~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 +0100 | mari-estel | (~mari-este@user/mari-estel) mari-estel |
2024-10-29 10:24:54 +0100 | lxsameer | (~lxsameer@Serene/lxsameer) lxsameer |
2024-10-29 10:25:20 +0100 | kaskal | (~kaskal@213-147-165-220.nat.highway.webapn.at) kaskal |
2024-10-29 10:26:04 +0100 | igemnace_ | (~igemnace@user/igemnace) igemnace |
2024-10-29 10:26:10 +0100 | igemnace | (~igemnace@user/igemnace) (Ping timeout: 252 seconds) |
2024-10-29 10:27:56 +0100 | igemnace_ | 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 +0100 | Inst | (~Inst@user/Inst) Inst |
2024-10-29 10:31:12 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Remote host closed the connection) |
2024-10-29 10:31:13 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds) |
2024-10-29 10:31:32 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2024-10-29 10:31:34 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Client Quit) |
2024-10-29 10:31:52 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2024-10-29 10:34:47 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 10:34:57 +0100 | euleritian | (~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 +0100 | morb | (~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 +0100 | euleritian | (~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 +0100 | euleritian | (~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 +0100 | mari-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 +0100 | morb | (~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 +0100 | hgolden__ | (~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 +0100 | hgolden_ | (~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 +0100 | morb | (~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 +0100 | turlando | (~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 +0100 | Smiles | (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 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
2024-10-29 11:21:01 +0100 | euleritian | (~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 +0100 | lortabac | (~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 +0100 | Maxdamantus | can'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 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
2024-10-29 11:29:56 +0100 | euleritian | (~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 +0100 | morb | (~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 +0100 | acidjnk_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 +0100 | morb | (~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 +0100 | Digitteknohippie | (~user@user/digit) Digit |
2024-10-29 11:38:49 +0100 | Digit | (~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 +0100 | sawilagar | (~sawilagar@user/sawilagar) sawilagar |
2024-10-29 11:41:36 +0100 | <Square2> | too* |
2024-10-29 11:42:10 +0100 | Maxdamantus | has 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 +0100 | CiaoSen | (~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 +0100 | Digitteknohippie | Digit |
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 +0100 | rosco | (~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 +0100 | machinedgod | (~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 +0100 | Digit | (~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 +0100 | caconym | (~caconym@user/caconym) (Quit: bye) |
2024-10-29 12:02:18 +0100 | caconym | (~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 +0100 | Rembane | is 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 +0100 | morb | (~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 +0100 | merijn | (~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 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds) |
2024-10-29 12:21:00 +0100 | zetef | (~quassel@5.14.132.142) zetef |
2024-10-29 12:21:00 +0100 | zetef | (~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 +0100 | merijn | (~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 +0100 | morb | (~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 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 264 seconds) |
2024-10-29 12:33:16 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac |
2024-10-29 12:35:42 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 12:45:32 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2024-10-29 12:45:34 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
2024-10-29 12:50:31 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 12:52:09 +0100 | alphazone | (~alphazone@2.219.56.221) (Ping timeout: 276 seconds) |
2024-10-29 12:55:36 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds) |
2024-10-29 13:00:14 +0100 | CiaoSen | (~Jura@2a05:5800:47e:3300:ca4b:d6ff:fec1:99da) CiaoSen |
2024-10-29 13:01:08 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 13:03:20 +0100 | rvalue | (~rvalue@user/rvalue) (Read error: Connection reset by peer) |
2024-10-29 13:03:50 +0100 | rvalue | (~rvalue@user/rvalue) rvalue |
2024-10-29 13:06:43 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 264 seconds) |
2024-10-29 13:07:39 +0100 | Digit | (~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 +0100 | morb | (~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 +0100 | srazkvt | (~sarah@user/srazkvt) srazkvt |
2024-10-29 13:24:21 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds) |
2024-10-29 13:26:34 +0100 | merijn | (~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 +0100 | alphazone | (~alphazone@2.219.56.221) |
2024-10-29 13:29:47 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2024-10-29 13:30:50 +0100 | SlackCoder | (~SlackCode@208.26.70.132) SlackCoder |
2024-10-29 13:31:12 +0100 | SlackCoder | (~SlackCode@208.26.70.132) (Client Quit) |
2024-10-29 13:37:30 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 13:38:46 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-10-29 13:49:10 +0100 | dilaver_ | (~dilaver_@user/dilaver-:32218) (Quit: The Lounge - https://thelounge.chat) |
2024-10-29 13:50:24 +0100 | petrichor | (~znc-user@user/petrichor) petrichor |
2024-10-29 13:50:45 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 13:53:50 +0100 | dilaver_ | (~dilaver_@user/dilaver-:32218) dilaver_ |
2024-10-29 13:54:49 +0100 | xff0x | (~xff0x@2405:6580:b080:900:dd4:7391:684:d55b) |
2024-10-29 13:55:56 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds) |
2024-10-29 13:58:37 +0100 | madhavanmiui | (~madhavanm@2409:40f4:3015:fc89:8000::) |
2024-10-29 13:58:40 +0100 | madhavanmiui | (~madhavanm@2409:40f4:3015:fc89:8000::) (Client Quit) |
2024-10-29 14:03:22 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 14:08:24 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds) |
2024-10-29 14:09:08 +0100 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-29 14:10:11 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f475911645e2836b524.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2024-10-29 14:13:18 +0100 | CiaoSen | (~Jura@2a05:5800:47e:3300:ca4b:d6ff:fec1:99da) (Ping timeout: 246 seconds) |
2024-10-29 14:13:18 +0100 | stef204 | (~stef204@user/stef204) stef204 |
2024-10-29 14:14:39 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 14:14:47 +0100 | jrm | (~jrm@user/jrm) (Ping timeout: 265 seconds) |
2024-10-29 14:17:29 +0100 | paul_j | (~user@8.190.187.81.in-addr.arpa) (Read error: Connection reset by peer) |
2024-10-29 14:17:44 +0100 | paul_j | (~user@8.190.187.81.in-addr.arpa) |
2024-10-29 14:19:14 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds) |
2024-10-29 14:19:34 +0100 | dyniec | (~dyniec@dybiec.info) dyniec |
2024-10-29 14:19:47 +0100 | stef204 | (~stef204@user/stef204) (Quit: WeeChat 4.2.1) |
2024-10-29 14:24:46 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-10-29 14:25:27 +0100 | sadmax | (~user@64.130.91.66) |
2024-10-29 14:25:39 +0100 | jrm | (~jrm@user/jrm) jrm |
2024-10-29 14:33:05 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 14:35:49 +0100 | Digitteknohippie | (~user@user/digit) Digit |
2024-10-29 14:36:07 +0100 | Digit | (~user@user/digit) (Ping timeout: 264 seconds) |
2024-10-29 14:39:35 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 255 seconds) |
2024-10-29 14:45:43 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f47b0bede14811a4453.dip0.t-ipconnect.de) |
2024-10-29 14:46:39 +0100 | sadmax | (~user@64.130.91.66) (Ping timeout: 260 seconds) |
2024-10-29 15:03:59 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 15:05:25 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2024-10-29 15:05:44 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
2024-10-29 15:07:52 +0100 | weary-traveler | (~user@user/user363627) user363627 |
2024-10-29 15:08:30 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 15:09:55 +0100 | morb | (~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 +0100 | user363627 | (~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 +0100 | morb | (~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 +0100 | weary-traveler | (~user@user/user363627) (Ping timeout: 252 seconds) |
2024-10-29 15:19:18 +0100 | Digitteknohippie | Digit |
2024-10-29 15:28:51 +0100 | CrunchyFlakes | (~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) (Quit: ZNC 1.8.2 - https://znc.in) |
2024-10-29 15:34:01 +0100 | CrunchyFlakes | (~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) |
2024-10-29 15:39:20 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
2024-10-29 15:39:49 +0100 | hgolden_ | (~hgolden@169.150.203.10) hgolden |
2024-10-29 15:42:35 +0100 | euleritian | (~euleritia@dynamic-176-006-130-165.176.6.pool.telefonica.de) |
2024-10-29 15:42:43 +0100 | hgolden__ | (~hgolden@146.70.173.165) (Ping timeout: 264 seconds) |
2024-10-29 15:45:23 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 15:46:34 +0100 | srazkvt | (~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 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 15:50:12 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en) |
2024-10-29 15:54:08 +0100 | sadmax | (~user@64.130.91.66) |
2024-10-29 15:54:40 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2024-10-29 15:56:27 +0100 | euleritian | (~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 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
2024-10-29 16:05:01 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 16:10:12 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds) |
2024-10-29 16:13:11 +0100 | AlexNoo_ | (~AlexNoo@178.34.150.252) |
2024-10-29 16:15:53 +0100 | AlexZenon | (~alzenon@178.34.150.78) (Ping timeout: 255 seconds) |
2024-10-29 16:16:47 +0100 | AlexNoo | (~AlexNoo@178.34.150.78) (Ping timeout: 255 seconds) |
2024-10-29 16:24:07 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 16:25:35 +0100 | AlexZenon | (~alzenon@178.34.150.252) |
2024-10-29 16:29:54 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 276 seconds) |
2024-10-29 16:30:16 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 252 seconds) |
2024-10-29 16:30:57 +0100 | merijn | (~merijn@77.242.116.146) merijn |
2024-10-29 16:36:08 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-10-29 16:37:29 +0100 | AlexNoo_ | AlexNoo |
2024-10-29 16:38:23 +0100 | Digit | (~user@user/digit) (Ping timeout: 255 seconds) |
2024-10-29 16:40:48 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-10-29 16:42:15 +0100 | AlexZenon | (~alzenon@178.34.150.252) (Ping timeout: 276 seconds) |
2024-10-29 16:42:46 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 16:46:37 +0100 | AlexZenon | (~alzenon@178.34.150.252) |
2024-10-29 16:48:14 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 16:51:24 +0100 | euleritian | (~euleritia@dynamic-176-006-130-165.176.6.pool.telefonica.de) |
2024-10-29 16:53:13 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-10-29 16:53:39 +0100 | Digit | (~user@user/digit) Digit |
2024-10-29 16:59:37 +0100 | rosco | (~rosco@60.53.5.183) (Quit: Lost terminal) |
2024-10-29 17:00:04 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2024-10-29 17:00:53 +0100 | AlexZenon | (~alzenon@178.34.150.252) (Ping timeout: 248 seconds) |
2024-10-29 17:03:30 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 17:05:36 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2) |
2024-10-29 17:06:17 +0100 | AlexZenon | (~alzenon@178.34.150.252) |
2024-10-29 17:10:57 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en) |
2024-10-29 17:11:48 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds) |
2024-10-29 17:21:38 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Ping timeout: 245 seconds) |
2024-10-29 17:23:42 +0100 | Katarushisu | (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) (Ping timeout: 246 seconds) |
2024-10-29 17:23:45 +0100 | Katarushisu3 | (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) Katarushisu |
2024-10-29 17:24:55 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-10-29 17:26:35 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 17:31:39 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 276 seconds) |
2024-10-29 17:39:03 +0100 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh |
2024-10-29 17:55:18 +0100 | euleritian | (~euleritia@dynamic-176-006-130-165.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
2024-10-29 17:55:37 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
2024-10-29 17:58:55 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 18:00:05 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds) |
2024-10-29 18:00:38 +0100 | euleritian | (~euleritia@dynamic-176-007-141-251.176.7.pool.telefonica.de) |
2024-10-29 18:01:54 +0100 | euphores | (~SASL_euph@user/euphores) (Quit: Leaving.) |
2024-10-29 18:05:22 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds) |
2024-10-29 18:07:04 +0100 | euleritian | (~euleritia@dynamic-176-007-141-251.176.7.pool.telefonica.de) (Ping timeout: 252 seconds) |
2024-10-29 18:09:15 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 252 seconds) |
2024-10-29 18:09:36 +0100 | gmg | (~user@user/gehmehgeh) (Ping timeout: 260 seconds) |
2024-10-29 18:11:03 +0100 | euphores | (~SASL_euph@user/euphores) euphores |
2024-10-29 18:11:34 +0100 | gmg | (~user@user/gehmehgeh) gehmehgeh |
2024-10-29 18:14:00 +0100 | ljdarj1 | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-29 18:16:12 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 246 seconds) |
2024-10-29 18:16:12 +0100 | ljdarj1 | ljdarj |
2024-10-29 18:17:42 +0100 | vglfr | (~vglfr@c-73-250-25-113.hsd1.md.comcast.net) (Ping timeout: 252 seconds) |
2024-10-29 18:18:30 +0100 | vglfr | (~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 +0100 | peterbecich | (~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 +0100 | vglfr | (~vglfr@2607:fb90:ea0e:4092:ac39:c391:8228:99c1) (Ping timeout: 246 seconds) |
2024-10-29 18:23:36 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2024-10-29 18:23:39 +0100 | vglfr | (~vglfr@2607:fb91:848:44ab:ad2:e57:e15b:944b) vglfr |
2024-10-29 18:25:30 +0100 | vglfr | (~vglfr@2607:fb91:848:44ab:ad2:e57:e15b:944b) (Read error: Connection reset by peer) |
2024-10-29 18:28:56 +0100 | euleritian | (~euleritia@dynamic-176-003-086-054.176.3.pool.telefonica.de) |
2024-10-29 18:35:17 +0100 | euleritian | (~euleritia@dynamic-176-003-086-054.176.3.pool.telefonica.de) (Ping timeout: 248 seconds) |
2024-10-29 18:35:51 +0100 | xal | (~xal@mx1.xal.systems) (Quit: bye) |
2024-10-29 18:36:10 +0100 | vglfr | (~vglfr@c-73-250-25-113.hsd1.md.comcast.net) vglfr |
2024-10-29 18:36:39 +0100 | euleritian | (~euleritia@dynamic-176-003-086-054.176.3.pool.telefonica.de) |
2024-10-29 18:38:44 +0100 | euleritian | (~euleritia@dynamic-176-003-086-054.176.3.pool.telefonica.de) (Read error: Connection reset by peer) |
2024-10-29 18:39:12 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
2024-10-29 18:42:24 +0100 | spew | (~spew@201.141.99.170) spew |
2024-10-29 18:43:54 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
2024-10-29 18:46:47 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
2024-10-29 18:47:46 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
2024-10-29 18:47:53 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
2024-10-29 18:53:28 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 18:59:41 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 255 seconds) |
2024-10-29 19:02:51 +0100 | sawilagar | (~sawilagar@user/sawilagar) (Remote host closed the connection) |
2024-10-29 19:04:11 +0100 | sawilagar | (~sawilagar@user/sawilagar) sawilagar |
2024-10-29 19:07:48 +0100 | RedFlamingos | (~RedFlamin@user/RedFlamingos) RedFlamingos |
2024-10-29 19:11:19 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) wootehfoot |
2024-10-29 19:13:52 +0100 | ft | (~ft@p4fc2a216.dip0.t-ipconnect.de) ft |
2024-10-29 19:22:06 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2024-10-29 19:24:19 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 19:24:42 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 19:25:24 +0100 | vglfr | (~vglfr@c-73-250-25-113.hsd1.md.comcast.net) (Ping timeout: 272 seconds) |
2024-10-29 19:25:40 +0100 | vglfr | (~vglfr@2607:fb91:848:44ab:ad2:e57:e15b:944b) vglfr |
2024-10-29 19:28:35 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-10-29 19:31:48 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds) |
2024-10-29 19:32:12 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
2024-10-29 19:32:49 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
2024-10-29 19:34:30 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 276 seconds) |
2024-10-29 19:39:41 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 19:46:11 +0100 | Nachtgespenst | (~user@user/siracusa) (Quit: Bye!) |
2024-10-29 19:46:38 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
2024-10-29 19:51:13 +0100 | user363627 | (~user@user/user363627) (Remote host closed the connection) |
2024-10-29 19:52:53 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds) |
2024-10-29 19:54:31 +0100 | euleritian | (~euleritia@dynamic-176-003-086-054.176.3.pool.telefonica.de) |
2024-10-29 19:57:45 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 19:59:42 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-10-29 20:00:05 +0100 | caconym | (~caconym@user/caconym) (Quit: bye) |
2024-10-29 20:00:41 +0100 | caconym | (~caconym@user/caconym) caconym |
2024-10-29 20:01:20 +0100 | euleritian | (~euleritia@dynamic-176-003-086-054.176.3.pool.telefonica.de) (Ping timeout: 255 seconds) |
2024-10-29 20:01:48 +0100 | vglfr | (~vglfr@2607:fb91:848:44ab:ad2:e57:e15b:944b) (Ping timeout: 276 seconds) |
2024-10-29 20:02:15 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-10-29 20:02:55 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 20:03:23 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-10-29 20:07:13 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 20:10:15 +0100 | mrmr155334346318 | (~mrmr@user/mrmr) mrmr |
2024-10-29 20:12:33 +0100 | SlackCoder | (~SlackCode@64-94-63-8.ip.weststar.net.ky) SlackCoder |
2024-10-29 20:12:50 +0100 | weary-traveler | (~user@user/user363627) user363627 |
2024-10-29 20:13:54 +0100 | kolay | (~kolay@79.165.22.215) |
2024-10-29 20:14:04 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
2024-10-29 20:14:09 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-10-29 20:19:25 +0100 | vglfr | (~vglfr@c-73-250-25-113.hsd1.md.comcast.net) vglfr |
2024-10-29 20:24:14 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en) |
2024-10-29 20:25:12 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 20:29:18 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2024-10-29 20:29:35 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Client Quit) |
2024-10-29 20:29:59 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 20:32:22 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2024-10-29 20:34:08 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 245 seconds) |
2024-10-29 20:36:04 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-10-29 20:37:00 +0100 | Everything | (~Everythin@178-133-213-22.mobile.vf-ua.net) |
2024-10-29 20:47:01 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 20:47:23 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 20:49:39 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-10-29 20:49:52 +0100 | kolay | (~kolay@79.165.22.215) (Remote host closed the connection) |
2024-10-29 20:51:17 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-29 20:51:42 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 20:54:33 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-10-29 20:55:58 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 272 seconds) |
2024-10-29 21:00:01 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
2024-10-29 21:01:01 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod |
2024-10-29 21:01:11 +0100 | euleritian | (~euleritia@dynamic-176-003-086-054.176.3.pool.telefonica.de) |
2024-10-29 21:02:23 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 21:07:27 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-10-29 21:08:17 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 21:09:51 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 21:12:55 +0100 | zero | zzz |
2024-10-29 21:15:15 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-10-29 21:16:15 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 265 seconds) |
2024-10-29 21:17:59 +0100 | Smiles | (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2024-10-29 21:18:33 +0100 | spew | (~spew@201.141.99.170) (Ping timeout: 246 seconds) |
2024-10-29 21:21:43 +0100 | mantraofpie_ | (~mantraofp@user/mantraofpie) (Remote host closed the connection) |
2024-10-29 21:22:06 +0100 | mantraofpie | (~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 +0100 | manolops | (~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 +0100 | manolops | (~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 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 21:29:58 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 21:30:28 +0100 | habib | (~habib@185.195.232.169) (Quit: Textual IRC Client: www.textualapp.com) |
2024-10-29 21:30:34 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-29 21:32:06 +0100 | simendsjo | (~user@84.211.91.108) simendsjo |
2024-10-29 21:41:24 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 21:46:01 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-10-29 21:46:12 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 246 seconds) |
2024-10-29 21:50:12 +0100 | EvanR | (~EvanR@user/evanr) (Quit: Leaving) |
2024-10-29 21:54:24 +0100 | lxsameer | (~lxsameer@Serene/lxsameer) (Ping timeout: 252 seconds) |
2024-10-29 21:56:46 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 21:58:19 +0100 | son0p | (~ff@186.119.84.216) (Ping timeout: 260 seconds) |
2024-10-29 22:00:51 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 22:01:22 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-29 22:01:31 +0100 | alphazone_ | (~alphazone@2.219.56.221) |
2024-10-29 22:04:32 +0100 | euleritian | (~euleritia@dynamic-176-003-086-054.176.3.pool.telefonica.de) (Read error: Connection reset by peer) |
2024-10-29 22:04:53 +0100 | alphazone | (~alphazone@2.219.56.221) (Ping timeout: 248 seconds) |
2024-10-29 22:05:04 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
2024-10-29 22:06:08 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 22:06:08 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
2024-10-29 22:06:28 +0100 | petrichor | (~znc-user@user/petrichor) (Read error: Connection reset by peer) |
2024-10-29 22:06:42 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2024-10-29 22:06:47 +0100 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
2024-10-29 22:09:14 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 22:09:28 +0100 | petrichor | (~znc-user@user/petrichor) petrichor |
2024-10-29 22:11:59 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 22:15:57 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-10-29 22:16:12 +0100 | SlackCoder | (~SlackCode@64-94-63-8.ip.weststar.net.ky) (Quit: Leaving) |
2024-10-29 22:17:49 +0100 | hgolden__ | (~hgolden@204.152.216.122) hgolden |
2024-10-29 22:20:21 +0100 | hgolden_ | (~hgolden@169.150.203.10) (Ping timeout: 252 seconds) |
2024-10-29 22:23:39 +0100 | simendsjo | (~user@84.211.91.108) (Ping timeout: 252 seconds) |
2024-10-29 22:27:17 +0100 | merijn | (~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 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-29 22:32:23 +0100 | BolzmannPain | (~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 +0100 | morb | (~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 +0100 | merijn | (~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 +0100 | merijn | (~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 +0100 | hc | (~hc@mail.hce.li) (Remote host closed the connection) |
2024-10-29 22:55:37 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 22:56:25 +0100 | spew | (~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 +0100 | RedFlamingos | (~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 +0100 | morb | (~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 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 23:01:45 +0100 | hc | (~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 +0100 | michalz | (~michalz@185.246.207.221) (Read error: Connection reset by peer) |
2024-10-29 23:03:07 +0100 | michalz | (~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 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-10-29 23:07:49 +0100 | spew | (~spew@201.141.99.170) (Ping timeout: 248 seconds) |
2024-10-29 23:09:37 +0100 | spew | (~spew@201.141.99.170) spew |
2024-10-29 23:13:24 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 23:15:43 +0100 | ubert | (~Thunderbi@178.165.189.55.wireless.dyn.drei.com) (Ping timeout: 264 seconds) |
2024-10-29 23:19:38 +0100 | emmanuelux_ | (~emmanuelu@user/emmanuelux) emmanuelux |
2024-10-29 23:20:10 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
2024-10-29 23:20:38 +0100 | emmanuelux_ | (~emmanuelu@user/emmanuelux) (Remote host closed the connection) |
2024-10-29 23:21:34 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla |
2024-10-29 23:22:34 +0100 | habib | (~habib@185.195.232.169) habib |
2024-10-29 23:27:14 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 23:27:53 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-10-29 23:31:33 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-10-29 23:32:09 +0100 | random-jellyfish | (~developer@user/random-jellyfish) random-jellyfish |
2024-10-29 23:34:25 +0100 | BolzmannPain | (~BolzmannP@user/BolzmannPain) (Quit: Client closed) |
2024-10-29 23:40:04 +0100 | ljdarj1 | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-29 23:40:51 +0100 | Nachtgespenst | (~user@user/siracusa) siracusa |
2024-10-29 23:42:36 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-29 23:43:24 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds) |
2024-10-29 23:43:24 +0100 | ljdarj1 | ljdarj |
2024-10-29 23:47:25 +0100 | Sgeo | (~Sgeo@user/sgeo) Sgeo |
2024-10-29 23:48:43 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
2024-10-29 23:49:27 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
2024-10-29 23:50:12 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-10-29 23:53:05 +0100 | Lears | (~Leary@user/Leary/x-0910699) Leary |
2024-10-29 23:54:18 +0100 | noctux | (~noctux@user/noctux) (Ping timeout: 265 seconds) |
2024-10-29 23:54:19 +0100 | pierrot | (~pi@user/pierrot) (Ping timeout: 265 seconds) |
2024-10-29 23:54:19 +0100 | flocks | (~flocks@134.122.90.60) (Ping timeout: 265 seconds) |
2024-10-29 23:54:25 +0100 | m5zs7k_ | (aquares@web10.mydevil.net) m5zs7k |
2024-10-29 23:54:46 +0100 | pierrot | (~pi@user/pierrot) pierrot |
2024-10-29 23:54:48 +0100 | sm | (~znc@plaintextaccounting/sm) (Ping timeout: 265 seconds) |
2024-10-29 23:54:48 +0100 | doyougnu | (~doyougnu@syn-045-046-170-068.res.spectrum.com) (Ping timeout: 265 seconds) |
2024-10-29 23:55:16 +0100 | Leary | (~Leary@user/Leary/x-0910699) (Ping timeout: 265 seconds) |
2024-10-29 23:55:17 +0100 | m5zs7k | (aquares@web10.mydevil.net) (Ping timeout: 265 seconds) |
2024-10-29 23:55:39 +0100 | doyougnu | (~doyougnu@syn-045-046-170-068.res.spectrum.com) doyougnu |
2024-10-29 23:55:45 +0100 | gentauro | (~gentauro@user/gentauro) (Ping timeout: 265 seconds) |
2024-10-29 23:55:59 +0100 | gentauro | (~gentauro@user/gentauro) gentauro |
2024-10-29 23:56:02 +0100 | Square | (~Square@user/square) Square |
2024-10-29 23:56:43 +0100 | ubert | (~Thunderbi@178.165.189.55.wireless.dyn.drei.com) ubert |
2024-10-29 23:56:48 +0100 | sm | (~znc@plaintextaccounting/sm) sm |
2024-10-29 23:56:49 +0100 | tt1231097832435 | (~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) (Quit: Ping timeout (120 seconds)) |
2024-10-29 23:57:12 +0100 | tt1231097832435 | (~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) tt1231 |
2024-10-29 23:57:49 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-29 23:59:10 +0100 | flocks | (~flocks@134.122.90.60) flocks |
2024-10-29 23:59:49 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |