From 33464c9ce7b0b1559f8cb23734065b8ecdd382c1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tom=C3=A1=C5=A1=20Musil?= Date: Sun, 6 Sep 2015 18:28:10 +0200 Subject: [PATCH 1/1] fix bug in unification --- src/HM.hs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/HM.hs b/src/HM.hs index e643938..9591706 100644 --- a/src/HM.hs +++ b/src/HM.hs @@ -86,7 +86,7 @@ unify (TypeVar a) t = varBind a t unify t (TypeVar a) = varBind a t unify (TypeFunction a b) (TypeFunction a' b') = do s1 <- unify a a' - s2 <- unify b b' + s2 <- unify (substituteT s1 b) (substituteT s1 b') return $ s1 `composeSub` s2 unify (Primitive a) (Primitive b) | a == b = return idSub unify a b = fail $ "cannot unify " ++ show a ++ " with " ++ show b @@ -127,7 +127,6 @@ ti e (NTTerm (Let x a b)) = do e' = Map.insert x t' e (s2, t2) <- ti (Map.map (substituteS s1) e') b return (s1 `composeSub` s2, t2) - algW :: TypedTerm -> Either String Type algW t = fst . runTI $ do -- 2.4.2