@@ -129,8 +129,12 @@ actuallyUnify variable1 variable2 = do
129 do sequence . concat . Map.elems $ Map.intersectionWith (zipWith unify) fields1 fields2
129 do sequence . concat . Map.elems $ Map.intersectionWith (zipWith unify) fields1 fields2
130 record1' <- liftIO $ (structuredVar . Record1 fields1') =<< var Flexible
130 record1' <- liftIO $ (structuredVar . Record1 fields1') =<< var Flexible
131 record2' <- liftIO $ (structuredVar . Record1 fields2') =<< var Flexible
131 record2' <- liftIO $ (structuredVar . Record1 fields2') =<< var Flexible
132+ case (Map.null fields1', Map.null fields2') of
133+ (True , True ) -> unify ext1 ext2
134+ (True , False) -> unify ext1 record2'
132− unify record1' ext2
135+ (False, True ) -> unify record1' ext2
133− unify ext1 record2'
136+ (False, False) -> do unify ext1 record2'
135 fields1' = unmerged fields1 fields2
139 fields1' = unmerged fields1 fields2
136 fields2' = unmerged fields2 fields1
140 fields2' = unmerged fields2 fields1