summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2010-10-19 13:04:41 +0000
committerkrasimir <krasimir@chalmers.se>2010-10-19 13:04:41 +0000
commit4ac1cf497033d9e32efddc96887679ddd8987860 (patch)
treebb3429f66dbdb8bfc8acda26b17f8f83b9130078 /src
parente36cc73b0fd6f0be4c1c8809db73f997d1484e9d (diff)
in the type checker monad we should use lazy pattern matching because otherwise we force the exhaustive tree generation to be strict
Diffstat (limited to 'src')
-rw-r--r--src/runtime/haskell/PGF/TypeCheck.hs8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/runtime/haskell/PGF/TypeCheck.hs b/src/runtime/haskell/PGF/TypeCheck.hs
index 9284d3569..fcfb58a9f 100644
--- a/src/runtime/haskell/PGF/TypeCheck.hs
+++ b/src/runtime/haskell/PGF/TypeCheck.hs
@@ -133,10 +133,10 @@ instance Functor (TcM s) where
runTcM :: Abstr -> TcM s a -> s -> MetaStore s -> ([(s,TcError)],[(s,MetaStore s,a)])
runTcM abs f s ms = collect (unTcM f abs s ms) ([],[])
where
- collect (Ok _ ms x) (es,xs) = (es,(s,ms,x) : xs)
- collect (Fail s e) (es,xs) = ((s,e) : es,xs)
- collect (Zero) exs = exs
- collect (Plus b1 b2) exs = collect b1 (collect b2 exs)
+ collect (Ok _ ms x) ~(es,xs) = (es,(s,ms,x) : xs)
+ collect (Fail s e) ~(es,xs) = ((s,e) : es,xs)
+ collect (Zero) exs = exs
+ collect (Plus b1 b2) exs = collect b1 (collect b2 exs)
lookupCatHyps :: CId -> TcM s [Hypo]
lookupCatHyps cat = TcM (\abstr s ms -> case Map.lookup cat (cats abstr) of