From 5acec7be215bb6655ca2d7643e043bf79a548d61 Mon Sep 17 00:00:00 2001 From: krasimir Date: Tue, 19 Oct 2010 13:04:41 +0000 Subject: [PATCH] in the type checker monad we should use lazy pattern matching because otherwise we force the exhaustive tree generation to be strict --- src/runtime/haskell/PGF/TypeCheck.hs | 8 ++++---- 1 file 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