2025/03/13

Newest at the top

2025-03-13 05:20:28 +0100 <euouae> I thought I was getting somewhere by writing a parser with a stateful counter, but then I realized I have nowhere to plug that parser in, there's no combinator in megaparsec that accepts a parser and spits out a Text "fast".
2025-03-13 05:19:49 +0100 <euouae> they suggest to use takeWhile1P and so on for fast parsing into Text. But it does not allow the predicate to have any state, e.g. I'd like to parse "at most 10" digits, or so; I don't want a list of 10 characters, I want it as a string
2025-03-13 05:18:58 +0100 <euouae> hm... I'm sort of bothered by this megaparsec thing
2025-03-13 05:13:09 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-03-13 05:08:33 +0100veryfungi(~veryfungi@user/veryfungi) veryfungi
2025-03-13 05:08:16 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-13 04:58:25 +0100 <euouae> yup I follow
2025-03-13 04:58:10 +0100 <jackdk> Yes, the idea is to provide `MonadState st (ParsecT e s m)` by lifting the state actions from the inner `m` in a way that doesn't affect the `ParsecT`.
2025-03-13 04:58:02 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-03-13 04:58:02 +0100izzyfalco(~jake_pers@user/izzyfalco) (Ping timeout: 268 seconds)
2025-03-13 04:56:48 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 268 seconds)
2025-03-13 04:56:33 +0100 <euouae> I misread it because I saw "MonadState" followed by "ParsecT" and I didn't realize what I was reading
2025-03-13 04:55:53 +0100 <euouae> oh wait, right. thank you jackdk.
2025-03-13 04:55:29 +0100 <jackdk> euouae: And no, you have `ParsecT Void Text (St.State Int)` which matches the instance `MonadState (ParsecT e s m)` with `e ~ Void`, `s ~ Text`, `m ~ St.State Int`, and this instance is usable because you have the instances `Stream s` and `MonadState Int (St.StateT Int Identity)` (expanding the alias for `St.State`)
2025-03-13 04:54:56 +0100 <euouae> somewhat frustrating to always have to run to haddock online
2025-03-13 04:53:34 +0100 <c_wraith> so if nothing you've imported re-exports the class, the instance won't be listed
2025-03-13 04:53:22 +0100izzyfalco(~jake_pers@user/izzyfalco) izzyfalco
2025-03-13 04:53:08 +0100 <jackdk> euouae: I had to `:m + Control.Monad.State` to see it
2025-03-13 04:52:58 +0100 <c_wraith> yeah, ghci only shows you instances for classes that it has in scope
2025-03-13 04:52:55 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-13 04:52:18 +0100 <euouae> jackdk: isn't that inverse of what I have in terms of the monadic stack?
2025-03-13 04:52:11 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-13 04:51:11 +0100 <euouae> Why is it not visible in GHCi? Is it because I haven't imported these packages?
2025-03-13 04:50:37 +0100 <euouae> Yeah you're right. It was not visible in GHCi
2025-03-13 04:50:09 +0100 <jackdk> Specifically, it's the instance `(Stream s, MonadState st m) => MonadState st (ParsecT e s m)`, which should let you use `modify` etc from `mtl`
2025-03-13 04:49:39 +0100 <c_wraith> https://hackage.haskell.org/package/megaparsec-9.7.0/docs/Text-Megaparsec.html#t:ParsecT look at that huge instance list
2025-03-13 04:49:31 +0100 <c_wraith> It's visible in the haddocks
2025-03-13 04:48:41 +0100 <euouae> Maybe an instance of MonadTrans from transformers?
2025-03-13 04:48:32 +0100 <euouae> I want to ask if there is such an operation already defined in megaparsec? I.e. what's a good way to discover such lifts? Would this info be visible in `:i ParsecT` at the instance declarations?
2025-03-13 04:47:58 +0100 <euouae> I'm using megaparsec and I have a `ParsecT Void Text (St.State Int) Text`. I want to use `modify (+1)` inside the do block. I know I have to lift it.
2025-03-13 04:47:06 +0100 <euouae> Hello
2025-03-13 04:47:03 +0100euouae(~euouae@user/euouae) euouae
2025-03-13 04:42:03 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-03-13 04:37:31 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-13 04:36:26 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 252 seconds)
2025-03-13 04:35:29 +0100TheCoffeMaker_(~TheCoffeM@186.136.173.70)
2025-03-13 04:26:14 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-13 04:19:28 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-13 04:15:09 +0100yegorc(~yegorc@user/yegorc) (Ping timeout: 252 seconds)
2025-03-13 04:10:46 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 252 seconds)
2025-03-13 04:08:34 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-03-13 04:06:27 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-13 04:04:04 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-13 03:55:24 +0100j1n37(~j1n37@user/j1n37) j1n37
2025-03-13 03:54:38 +0100j1n37(~j1n37@user/j1n37) (Ping timeout: 252 seconds)
2025-03-13 03:53:54 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-03-13 03:48:44 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-13 03:44:34 +0100messewix(~jmc@user/messewix) (Remote host closed the connection)
2025-03-13 03:44:29 +0100messewix(~jmc@user/messewix) messewix
2025-03-13 03:44:11 +0100messewix(~jmc@user/messewix) (Quit: Konversation terminated!)