correctly apply substs
This commit is contained in:
@@ -136,7 +136,7 @@ infer1' g1 e = do
|
|||||||
((t,j) :< _) <- annotate e
|
((t,j) :< _) <- annotate e
|
||||||
g2 <- unify (j ^. constraints)
|
g2 <- unify (j ^. constraints)
|
||||||
g <- unionContextWithKeyM unifyTypes g1 g2
|
g <- unionContextWithKeyM unifyTypes g1 g2
|
||||||
pure $ ifoldlOf (contextVars . itraversed) subst t g
|
pure $ ifoldrOf (contextVars . itraversed) subst t g
|
||||||
where
|
where
|
||||||
-- intuitively, we'd return mgu(s,t) but the union is left-biased making `s`
|
-- intuitively, we'd return mgu(s,t) but the union is left-biased making `s`
|
||||||
-- the user-specified type: prioritise her.
|
-- the user-specified type: prioritise her.
|
||||||
@@ -211,6 +211,7 @@ typeCheckRlpProgR p = tc p
|
|||||||
etaExpandAll = programDecls . each %~ etaExpand
|
etaExpandAll = programDecls . each %~ etaExpand
|
||||||
|
|
||||||
etaExpand :: Decl b (RlpExpr b) -> Decl b (RlpExpr b)
|
etaExpand :: Decl b (RlpExpr b) -> Decl b (RlpExpr b)
|
||||||
|
etaExpand (FunD n [] e) = FunD n [] e
|
||||||
etaExpand (FunD n as e)
|
etaExpand (FunD n as e)
|
||||||
| Right as' <- allVarP as
|
| Right as' <- allVarP as
|
||||||
= FunD n [] (Finl . LamF as' $ e)
|
= FunD n [] (Finl . LamF as' $ e)
|
||||||
|
|||||||
Reference in New Issue
Block a user