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