ref: 4c56f8b1c90927927e8ea48c034290a0a75afa96
parent: e126f4d9585882d0bedb886c87387912c3166c32
author: Lennart Augustsson <lennart@augustsson.net>
date: Sun Feb 18 08:46:08 EST 2024
Small efficiency tweak
--- a/src/Text/ParserComb.hs
+++ b/src/Text/ParserComb.hs
@@ -91,9 +91,10 @@
(>>=) p k = P $ \ t ->
case runP p t of
Many aus plf ->
- let { xss = [ runP (k a) u | (a, u) <- aus ] }- in case unzip [ (rs, lf) | Many rs lf <- xss ] of
- (rss, lfs) -> Many (concat rss) (longests (plf : lfs))
+ let ms = map (\ (a, u) -> runP (k a) u) aus
+ rss = map (\ (Many rs _) -> rs) ms
+ lfs = map (\ (Many _ lf) -> lf) ms
+ in Many (concat rss) (longests (plf : lfs))
return = pure
instance forall s t tm . TokenMachine tm t => MonadFail (Prsr s tm t) where
--
⑨