| 2026-06-30 00:08:31 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-30 00:15:09 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-06-30 00:26:37 +0000 | merijn | (~merijn@62.45.136.136) merijn |
| 2026-06-30 00:28:00 +0000 | robobub | (uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 2026-06-30 00:30:44 +0000 | merijn | (~merijn@62.45.136.136) (Ping timeout: 245 seconds) |
| 2026-06-30 00:36:50 +0000 | acidjnk_new | (~acidjnk@p200300d6e74def672da110570be53229.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 2026-06-30 00:36:59 +0000 | acidjnk | (~acidjnk@p200300d6e74def672da110570be53229.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 2026-06-30 00:41:55 +0000 | merijn | (~merijn@62.45.136.136) merijn |
| 2026-06-30 00:46:53 +0000 | merijn | (~merijn@62.45.136.136) (Ping timeout: 268 seconds) |
| 2026-06-30 00:57:16 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-30 01:01:50 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-06-30 01:06:50 +0000 | xff0x | (~xff0x@2405:6580:b080:900:e4cf:554c:fb5:7866) (Ping timeout: 245 seconds) |
| 2026-06-30 01:08:26 +0000 | polykernel_ | (~polykerne@user/polykernel) polykernel |
| 2026-06-30 01:10:58 +0000 | polykernel | (~polykerne@user/polykernel) (Ping timeout: 276 seconds) |
| 2026-06-30 01:10:58 +0000 | polykernel_ | polykernel |
| 2026-06-30 01:12:38 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-30 01:16:59 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-06-30 01:26:43 +0000 | ft | (~ft@p3e9bc5ec.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 2026-06-30 01:27:22 +0000 | Digit | (~user@user/digit) Digit |
| 2026-06-30 01:28:01 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-06-30 01:31:53 +0000 | jrm | (~jrm@user/jrm) (Quit: ciao) |
| 2026-06-30 01:32:31 +0000 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds) |
| 2026-06-30 01:32:36 +0000 | absentia | (~henricus@user/absentia) absentia |
| 2026-06-30 01:32:57 +0000 | <absentia> | i appear to be struggling with haskell text parsing |
| 2026-06-30 01:33:07 +0000 | <absentia> | it's not much, 300k lines and 25MB of UTF8 |
| 2026-06-30 01:33:14 +0000 | jrm | (~jrm@user/jrm) jrm |
| 2026-06-30 01:33:23 +0000 | <absentia> | but it is stateful, i need to thread a cache through the parse, updated by each line |
| 2026-06-30 01:33:40 +0000 | <absentia> | attoparsec.text still chokes, takes several minutes |
| 2026-06-30 01:34:11 +0000 | <absentia> | accumulating into a vector for each line |
| 2026-06-30 01:35:11 +0000 | <jreicher> | Parsing is not stateful. |
| 2026-06-30 01:35:25 +0000 | <jreicher> | Sorry, I should say it's not side-effecting |
| 2026-06-30 01:35:36 +0000 | <jreicher> | You can write it with a state monad if you want |
| 2026-06-30 01:35:40 +0000 | <absentia> | jreicher: they're weechat logs |
| 2026-06-30 01:35:43 +0000 | <absentia> | i manually implemented a state monad |
| 2026-06-30 01:35:59 +0000 | <absentia> | the idea is when you see a PRIVMSG log line, you look up the hostname associated with that nick in a cache |
| 2026-06-30 01:36:02 +0000 | <jreicher> | You mean you didn't use the state monad supplied by Haskell? |
| 2026-06-30 01:36:06 +0000 | <absentia> | the cache is populated by earlier JOIN/PART/QUIT messages |
| 2026-06-30 01:36:19 +0000 | <absentia> | jreicher: so what do i do, do i stack StateT on top of Parser? |
| 2026-06-30 01:36:34 +0000 | <absentia> | some LLM actually advised not to do this, it will be slow |
| 2026-06-30 01:36:53 +0000 | <absentia> | instead my parser just returns (s, a) |
| 2026-06-30 01:36:53 +0000 | <jreicher> | Would you prefer something that's fast and broken, or slow and works? |
| 2026-06-30 01:36:56 +0000 | <mauke> | StateT Parser feels wrong |
| 2026-06-30 01:37:01 +0000 | <absentia> | it's already slow and works |
| 2026-06-30 01:37:03 +0000 | <absentia> | but thank you for presuming |
| 2026-06-30 01:37:11 +0000 | <jreicher> | Oh I thought you said it was broken |
| 2026-06-30 01:37:11 +0000 | <absentia> | my issue is i want it to be fast and working |
| 2026-06-30 01:37:13 +0000 | <EvanR> | when you are parsing and have a state, you have to decide when the state is reset if ever |
| 2026-06-30 01:37:17 +0000 | <absentia> | jreicher: where did i say that |
| 2026-06-30 01:37:17 +0000 | <mauke> | wouldn't that give you stateful construction of a (pure) parser? |
| 2026-06-30 01:37:22 +0000 | <absentia> | jreicher: maybe you should work on your reading comprehension |
| 2026-06-30 01:37:32 +0000 | <absentia> | jreicher: instead of projecting whatever wh*te nonsense you have going on up there |
| 2026-06-30 01:37:52 +0000 | <monochrom> | I think they mean StateT Foo Parser but they don't tell you what's Foo. |
| 2026-06-30 01:37:53 +0000 | <EvanR> | this is no longer serious! |
| 2026-06-30 01:38:00 +0000 | <mauke> | er, yes |
| 2026-06-30 01:38:03 +0000 | <jreicher> | absentia: it's what I thought you meant by "I appear to be struggling" and also "chokes". It's a simple misunderstanding, and you don't need to be so harsh about it. |
| 2026-06-30 01:38:10 +0000 | <mauke> | StateT s Parser |
| 2026-06-30 01:38:13 +0000 | <absentia> | anyway |
| 2026-06-30 01:38:22 +0000 | <absentia> | mauke: Parser does not instance MonadState or whatever |
| 2026-06-30 01:38:40 +0000 | <absentia> | attoparsec explicitly diverges from parsec and megaparsec in this way, supposedly for performance |
| 2026-06-30 01:38:51 +0000 | <mauke> | ?? |
| 2026-06-30 01:38:55 +0000 | <monochrom> | But crucially whether this is fast or slow depends on Foo, along with a hundred other "details" not revealed. |
| 2026-06-30 01:39:07 +0000 | <absentia> | https://hackage.haskell.org/package/attoparsec-0.14.4/docs/Data-Attoparsec-Internal-Types.html#t:P… |
| 2026-06-30 01:39:20 +0000 | <mauke> | my concern was the layering |
| 2026-06-30 01:39:26 +0000 | <absentia> | https://hackage.haskell.org/package/parsec-3.1.18.0/docs/Text-Parsec.html#t:ParsecT |