X-Git-Url: http://git.tomasm.cz/fp.git/blobdiff_plain/763aa13445f67ffe289fe6f3186dd269a909d8a5..33464c9ce7b0b1559f8cb23734065b8ecdd382c1:/src/HM.hs?ds=inline 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