@@ -69,15 +69,15 @@ cSubNoContext k v (x :<<: poly@(Forall vs cs tipe)) = force $ x :<<: poly'
70concretize (Forall xs cs t) = do
70concretize (Forall xs cs t) = do
71 pairs <- mapM (\x -> liftM ((,) x) guid) xs
71 pairs <- mapM (\x -> liftM ((,) x) guid) xs
72− return ( foldl' (\t' (k,v) -> tSub k (VarT v) t) t pairs
72+ return ( foldl' (\t' (k,v) -> tSub k (VarT v) t') t pairs
73 , foldl' (\cs' (k,v) -> map (cSub k $ VarT v) cs') cs pairs )
73 , foldl' (\cs' (k,v) -> map (cSub k $ VarT v) cs') cs pairs )
75rescheme :: Scheme -> GuidCounter Scheme
75rescheme :: Scheme -> GuidCounter Scheme
76rescheme (Forall xs cs t) = do
76rescheme (Forall xs cs t) = do
77 pairs <- mapM (\x -> liftM ((,) x) guid) xs
77 pairs <- mapM (\x -> liftM ((,) x) guid) xs
78− let t' = foldl' (\t' (k,v) -> tSub k (VarT v) t') t pairs
78+ let tipe = foldl' (\t' (k,v) -> tSub k (VarT v) t') t pairs
79− let cs' = foldl' (\cs' (k,v) -> map (cSub k $ VarT v) cs') cs pairs
79+ let cs' = foldl' (\cs' (k,v) -> map (cSub k $ VarT v) cs') cs pairs
80− return $ Forall (map snd pairs) cs' t'
80+ return $ Forall (map snd pairs) cs' tipe
82freeVars (VarT v) = [v]
82freeVars (VarT v) = [v]
83freeVars (LambdaT t1 t2) = freeVars t1 ++ freeVars t2
83freeVars (LambdaT t1 t2) = freeVars t1 ++ freeVars t2