2024/12/28

Newest at the top

2024-12-28 08:24:39 +0100housemate(~housemate@pa49-199-79-186.pa.vic.optusnet.com.au) (Ping timeout: 252 seconds)
2024-12-28 08:21:48 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 264 seconds)
2024-12-28 08:18:42 +0100euleritian(~euleritia@dynamic-176-006-141-001.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-12-28 08:14:02 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
2024-12-28 08:08:52 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-28 08:07:32 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) remedan
2024-12-28 08:06:55 +0100remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
2024-12-28 08:02:12 +0100 <c_wraith> But they do hold for the parser combinator library in base!
2024-12-28 08:01:23 +0100housemate(~housemate@pa49-199-79-186.pa.vic.optusnet.com.au) housemate
2024-12-28 08:01:18 +0100 <haskellbridge> <maerwald> well, distributive laws don't hold for Alternative even in core libs
2024-12-28 08:01:11 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-28 08:00:35 +0100JamesMowery439(~JamesMowe@ip68-228-212-232.ph.ph.cox.net) JamesMowery
2024-12-28 08:00:19 +0100JamesMowery439(~JamesMowe@ip68-228-212-232.ph.ph.cox.net) (Quit: Goodbye)
2024-12-28 07:58:32 +0100 <c_wraith> just give me simple distributive laws which don't have tons of cases.
2024-12-28 07:57:46 +0100 <c_wraith> If I have to know that ((a <*> b) <|> (a <*> c)) is the same as (a <*> (b <|> c)), but ((a <*> c) <|> (b <*> c)) is not the same as ((a <|> b) <*> c), it's gone off the rails.
2024-12-28 07:57:11 +0100 <haskellbridge> <maerwald> no idea what that means
2024-12-28 07:56:32 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-28 07:54:41 +0100 <c_wraith> I want basic refactoring to work, which is not what it does.
2024-12-28 07:53:00 +0100 <haskellbridge> <maerwald> what you want is non-determinism, that's not what it does
2024-12-28 07:51:40 +0100 <haskellbridge> <maerwald> *does
2024-12-28 07:51:27 +0100 <haskellbridge> <maerwald> it doesn't backtrack on failure of a single parser
2024-12-28 07:50:05 +0100 <c_wraith> being able to parse that string with that parser is backtracking. Not needing to use try to avoid breaking is just not being broken.
2024-12-28 07:48:53 +0100 <c_wraith> yeah, attoparsec doesn't backtrack either. parseOnly ((string "a" <|> string "aa") <* string "b") "aab" ----> Left "string"
2024-12-28 07:45:21 +0100haver(~Enviosity@2.219.56.221)
2024-12-28 07:43:44 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-12-28 07:42:07 +0100 <c_wraith> well, sort of. It never discards input it might still choose to use. I don't believe it will actually backtrack on a successful parse if a future parse fails.
2024-12-28 07:42:07 +0100 <fp> I know it's not related to backtracking because the misbehaviour is at the beginning of the input
2024-12-28 07:41:21 +0100 <haskellbridge> <maerwald> it always backtracks on failure
2024-12-28 07:40:46 +0100 <haskellbridge> <maerwald> I prefer attoparsec
2024-12-28 07:40:44 +0100 <c_wraith> not using it when you need to will make parses fail for no apparent reason.
2024-12-28 07:40:13 +0100 <c_wraith> If you're using megaparsec, you need to know when/why to use try
2024-12-28 07:39:36 +0100 <fp> (unrelated to my question)
2024-12-28 07:39:31 +0100 <haskellbridge> <maerwald> that would then use the function applicative instance I believe
2024-12-28 07:39:30 +0100 <fp> now to figure out why that didn't solve my problem
2024-12-28 07:39:19 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-28 07:39:16 +0100 <fp> right yeah, that was it
2024-12-28 07:38:21 +0100 <haskellbridge> <maerwald> without parens, you have (optional string) "#d"
2024-12-28 07:37:54 +0100 <c_wraith> I should stop trying to type correctly tonight. option*al*.
2024-12-28 07:37:38 +0100 <c_wraith> option (string "#d")
2024-12-28 07:37:31 +0100 <c_wraith> oh, right.
2024-12-28 07:37:23 +0100 <haskellbridge> <maerwald> missing parenthesis too I think
2024-12-28 07:37:19 +0100 <fp> same that way
2024-12-28 07:37:10 +0100 <c_wraith> yeah, flip that to *>
2024-12-28 07:36:57 +0100 <fp> number <- optional string "#d" <* someTill decimalDigit (lookAhead delimiter)
2024-12-28 07:36:41 +0100 <haskellbridge> <maerwald> show the real code
2024-12-28 07:36:36 +0100 <c_wraith> What are you doing to make it not?
2024-12-28 07:36:27 +0100 <c_wraith> optional returns a parser.
2024-12-28 07:36:26 +0100 <haskellbridge> <maerwald> yes
2024-12-28 07:36:12 +0100 <fp> looking at the type signature of (*>), I think both sides need to be of the same monad?
2024-12-28 07:35:46 +0100 <fp> That still gives me a type error on the left side that it's Maybe and not Parser