correctly apply substs

This commit is contained in:
crumbtoo
2024-03-15 18:47:52 -06:00
parent 48ccda9549
commit 7727fbe668

View File

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