forked from GitHub/gf-core
in the type checker monad we should use lazy pattern matching because otherwise we force the exhaustive tree generation to be strict
This commit is contained in:
@@ -133,10 +133,10 @@ instance Functor (TcM s) where
|
|||||||
runTcM :: Abstr -> TcM s a -> s -> MetaStore s -> ([(s,TcError)],[(s,MetaStore s,a)])
|
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) ([],[])
|
runTcM abs f s ms = collect (unTcM f abs s ms) ([],[])
|
||||||
where
|
where
|
||||||
collect (Ok _ ms x) (es,xs) = (es,(s,ms,x) : xs)
|
collect (Ok _ ms x) ~(es,xs) = (es,(s,ms,x) : xs)
|
||||||
collect (Fail s e) (es,xs) = ((s,e) : es,xs)
|
collect (Fail s e) ~(es,xs) = ((s,e) : es,xs)
|
||||||
collect (Zero) exs = exs
|
collect (Zero) exs = exs
|
||||||
collect (Plus b1 b2) exs = collect b1 (collect b2 exs)
|
collect (Plus b1 b2) exs = collect b1 (collect b2 exs)
|
||||||
|
|
||||||
lookupCatHyps :: CId -> TcM s [Hypo]
|
lookupCatHyps :: CId -> TcM s [Hypo]
|
||||||
lookupCatHyps cat = TcM (\abstr s ms -> case Map.lookup cat (cats abstr) of
|
lookupCatHyps cat = TcM (\abstr s ms -> case Map.lookup cat (cats abstr) of
|
||||||
|
|||||||
Reference in New Issue
Block a user