2026/06/30

2026-06-30 00:08:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-30 00:15:09 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-06-30 00:26:37 +0000merijn(~merijn@62.45.136.136) merijn
2026-06-30 00:28:00 +0000robobub(uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2026-06-30 00:30:44 +0000merijn(~merijn@62.45.136.136) (Ping timeout: 245 seconds)
2026-06-30 00:36:50 +0000acidjnk_new(~acidjnk@p200300d6e74def672da110570be53229.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2026-06-30 00:36:59 +0000acidjnk(~acidjnk@p200300d6e74def672da110570be53229.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2026-06-30 00:41:55 +0000merijn(~merijn@62.45.136.136) merijn
2026-06-30 00:46:53 +0000merijn(~merijn@62.45.136.136) (Ping timeout: 268 seconds)
2026-06-30 00:57:16 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-30 01:01:50 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-30 01:06:50 +0000xff0x(~xff0x@2405:6580:b080:900:e4cf:554c:fb5:7866) (Ping timeout: 245 seconds)
2026-06-30 01:08:26 +0000polykernel_(~polykerne@user/polykernel) polykernel
2026-06-30 01:10:58 +0000polykernel(~polykerne@user/polykernel) (Ping timeout: 276 seconds)
2026-06-30 01:10:58 +0000polykernel_polykernel
2026-06-30 01:12:38 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-30 01:16:59 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-06-30 01:26:43 +0000ft(~ft@p3e9bc5ec.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2026-06-30 01:27:22 +0000Digit(~user@user/digit) Digit
2026-06-30 01:28:01 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-06-30 01:31:53 +0000jrm(~jrm@user/jrm) (Quit: ciao)
2026-06-30 01:32:31 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
2026-06-30 01:32:36 +0000absentia(~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 +0000jrm(~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