@@ -117,22 +117,6 @@ mismatch =
117117 err vars ()
118118
119119
120−try2 :: Unify () -> Unify () -> Unify ()
121−try2 (Unify k1) (Unify k2) =
122− Unify $ \vars ok err ->
123− let
124− ok1 vars1 () = k2 vars1 ok err
125− err1 vars1 () = k2 vars1 err err
126− in
127− k1 vars ok1 err1
128−
129−
130−{-# INLINE try3 #-}
131−try3 :: Unify () -> Unify () -> Unify () -> Unify ()
132−try3 u1 u2 u3 =
133− try2 u1 (try2 u2 u3)
134−
135−
136120
137121-- UNIFICATION HELPERS
138122
@@ -555,9 +539,8 @@ unifyStructure context flatType content otherContent =
555539 unifyArgs vars context args otherArgs ok1 err
556540
557541 (Fun1 arg1 res1, Fun1 arg2 res2) ->
558− do try2
559− (subUnify arg1 arg2)
560− (subUnify res1 res2)
542+ do subUnify arg1 arg2
543+ subUnify res1 res2
561544 merge context otherContent
562545
563546 (EmptyRecord1, EmptyRecord1) ->
@@ -578,16 +561,14 @@ unifyStructure context flatType content otherContent =
578561 k vars ok err
579562
580563 (Tuple1 a b Nothing, Tuple1 x y Nothing) ->
581− do try2
582− (subUnify a x)
583− (subUnify b y)
564+ do subUnify a x
565+ subUnify b y
584566 merge context otherContent
585567
586568 (Tuple1 a b (Just c), Tuple1 x y (Just z)) ->
587− do try3
588− (subUnify a x)
589− (subUnify b y)
590− (subUnify c z)
569+ do subUnify a x
570+ subUnify b y
571+ subUnify c z
591572 merge context otherContent
592573
593574 (Unit1, Unit1) ->
@@ -642,33 +623,29 @@ unifyRecord context (RecordStructure fields1 ext1) (RecordStructure fields2 ext2
642623 if Map.null uniqueFields1 then
643624
644625 if Map.null uniqueFields2 then
645− try2
646− (subUnify ext1 ext2)
647− (unifySharedFields context sharedFields Map.empty ext1)
626+ do subUnify ext1 ext2
627+ unifySharedFields context sharedFields Map.empty ext1
648628
649629 else
650630 do subRecord <- fresh context (Structure (Record1 uniqueFields2 ext2))
651− try2
652− (subUnify ext1 subRecord)
653− (unifySharedFields context sharedFields Map.empty subRecord)
631+ subUnify ext1 subRecord
632+ unifySharedFields context sharedFields Map.empty subRecord
654633
655634 else
656635
657636 if Map.null uniqueFields2 then
658637 do subRecord <- fresh context (Structure (Record1 uniqueFields1 ext1))
659− try2
660− (subUnify subRecord ext2)
661− (unifySharedFields context sharedFields Map.empty subRecord)
638+ subUnify subRecord ext2
639+ unifySharedFields context sharedFields Map.empty subRecord
662640
663641 else
664642 do let otherFields = Map.union uniqueFields1 uniqueFields2
665643 ext <- fresh context Type.unnamedFlexVar
666644 sub1 <- fresh context (Structure (Record1 uniqueFields1 ext))
667645 sub2 <- fresh context (Structure (Record1 uniqueFields2 ext))
668− try3
669− (subUnify ext1 sub2)
670− (subUnify sub1 ext2)
671− (unifySharedFields context sharedFields otherFields ext)
646+ subUnify ext1 sub2
647+ subUnify sub1 ext2
648+ unifySharedFields context sharedFields otherFields ext
672649
673650
674651unifySharedFields :: Context -> Map.Map N.Name (Variable, Variable) -> Map.Map N.Name Variable -> Variable -> Unify ()