@@ -117,22 +117,6 @@ mismatch =
117 err vars ()
117 err vars ()
120−try2 :: Unify () -> Unify () -> Unify ()
121−try2 (Unify k1) (Unify k2) =
122− Unify $ \vars ok err ->
124− ok1 vars1 () = k2 vars1 ok err
125− err1 vars1 () = k2 vars1 err err
131−try3 :: Unify () -> Unify () -> Unify () -> Unify ()
133− try2 u1 (try2 u2 u3)
137-- UNIFICATION HELPERS
121-- UNIFICATION HELPERS
@@ -555,9 +539,8 @@ unifyStructure context flatType content otherContent =
555 unifyArgs vars context args otherArgs ok1 err
539 unifyArgs vars context args otherArgs ok1 err
557 (Fun1 arg1 res1, Fun1 arg2 res2) ->
541 (Fun1 arg1 res1, Fun1 arg2 res2) ->
559− (subUnify arg1 arg2)
542+ do subUnify arg1 arg2
560− (subUnify res1 res2)
543+ subUnify res1 res2
561 merge context otherContent
544 merge context otherContent
563 (EmptyRecord1, EmptyRecord1) ->
546 (EmptyRecord1, EmptyRecord1) ->
@@ -578,16 +561,14 @@ unifyStructure context flatType content otherContent =
578 k vars ok err
561 k vars ok err
580 (Tuple1 a b Nothing, Tuple1 x y Nothing) ->
563 (Tuple1 a b Nothing, Tuple1 x y Nothing) ->
582− (subUnify a x)
564+ do subUnify a x
583− (subUnify b y)
565+ subUnify b y
584 merge context otherContent
566 merge context otherContent
586 (Tuple1 a b (Just c), Tuple1 x y (Just z)) ->
568 (Tuple1 a b (Just c), Tuple1 x y (Just z)) ->
588− (subUnify a x)
569+ do subUnify a x
589− (subUnify b y)
570+ subUnify b y
590− (subUnify c z)
571+ subUnify c z
591 merge context otherContent
572 merge context otherContent
593 (Unit1, Unit1) ->
574 (Unit1, Unit1) ->
@@ -642,33 +623,29 @@ unifyRecord context (RecordStructure fields1 ext1) (RecordStructure fields2 ext2
642 if Map.null uniqueFields1 then
623 if Map.null uniqueFields1 then
644 if Map.null uniqueFields2 then
625 if Map.null uniqueFields2 then
646− (subUnify ext1 ext2)
626+ do subUnify ext1 ext2
647− (unifySharedFields context sharedFields Map.empty ext1)
627+ unifySharedFields context sharedFields Map.empty ext1
650 do subRecord <- fresh context (Structure (Record1 uniqueFields2 ext2))
630 do subRecord <- fresh context (Structure (Record1 uniqueFields2 ext2))
652− (subUnify ext1 subRecord)
631+ subUnify ext1 subRecord
653− (unifySharedFields context sharedFields Map.empty subRecord)
632+ unifySharedFields context sharedFields Map.empty subRecord
657 if Map.null uniqueFields2 then
636 if Map.null uniqueFields2 then
658 do subRecord <- fresh context (Structure (Record1 uniqueFields1 ext1))
637 do subRecord <- fresh context (Structure (Record1 uniqueFields1 ext1))
660− (subUnify subRecord ext2)
638+ subUnify subRecord ext2
661− (unifySharedFields context sharedFields Map.empty subRecord)
639+ unifySharedFields context sharedFields Map.empty subRecord
664 do let otherFields = Map.union uniqueFields1 uniqueFields2
642 do let otherFields = Map.union uniqueFields1 uniqueFields2
665 ext <- fresh context Type.unnamedFlexVar
643 ext <- fresh context Type.unnamedFlexVar
666 sub1 <- fresh context (Structure (Record1 uniqueFields1 ext))
644 sub1 <- fresh context (Structure (Record1 uniqueFields1 ext))
667 sub2 <- fresh context (Structure (Record1 uniqueFields2 ext))
645 sub2 <- fresh context (Structure (Record1 uniqueFields2 ext))
669− (subUnify ext1 sub2)
646+ subUnify ext1 sub2
670− (subUnify sub1 ext2)
647+ subUnify sub1 ext2
671− (unifySharedFields context sharedFields otherFields ext)
648+ unifySharedFields context sharedFields otherFields ext
674unifySharedFields :: Context -> Map.Map N.Name (Variable, Variable) -> Map.Map N.Name Variable -> Variable -> Unify ()
651unifySharedFields :: Context -> Map.Map N.Name (Variable, Variable) -> Map.Map N.Name Variable -> Variable -> Unify ()