shithub: MicroHs

Download patch

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
--