@@ -154,12 +154,12 @@ unifyRows r1 r2 =
154154 unifyRows' :: [(String, Type)] -> Type -> [(String, Type)] -> Type -> UnifyT Type Check ()
155155 unifyRows' [] (TUnknown u) sd r = u =:= rowFromList (sd, r)
156156 unifyRows' sd r [] (TUnknown u) = u =:= rowFromList (sd, r)
157− unifyRows' ((name, ty):row) r others u@(TUnknown un) = do
158− occursCheck un ty
159− forM_ row $ \(_, t) -> occursCheck un t
160− u' <- fresh
161− u =?= RCons name ty u'
162− unifyRows' row r others u'
157+ unifyRows' sd1 (TUnknown u1) sd2 (TUnknown u2) = do
158+ forM_ sd1 $ \(_, t) -> occursCheck u2 t
159+ forM_ sd2 $ \(_, t) -> occursCheck u1 t
160+ rest <- fresh
161+ u1 =:= rowFromList (sd2, rest)
162+ u2 =:= rowFromList (sd1, rest)
163163 unifyRows' [] REmpty [] REmpty = return ()
164164 unifyRows' [] (TypeVar v1) [] (TypeVar v2) | v1 == v2 = return ()
165165 unifyRows' [] (Skolem _ s1 _) [] (Skolem _ s2 _) | s1 == s2 = return ()