correctly apply substs

This commit is contained in:
crumbtoo
2024-03-15 18:47:52 -06:00
parent 0ca18b1179
commit e6d3a45e11

View File

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