@@ -245,6 +245,9 @@ toDiff localizer ctx tipe1 tipe2 =
245 (FlexVar _, _ ) -> similar localizer ctx tipe1 tipe2
245 (FlexVar _, _ ) -> similar localizer ctx tipe1 tipe2
246 (_ , FlexVar _) -> similar localizer ctx tipe1 tipe2
246 (_ , FlexVar _) -> similar localizer ctx tipe1 tipe2
248+ (FlexSuper s _, t ) | isSuper s t -> similar localizer ctx tipe1 tipe2
249+ (t , FlexSuper s _) | isSuper s t -> similar localizer ctx tipe1 tipe2
248 (Lambda a b cs, Lambda x y zs) ->
251 (Lambda a b cs, Lambda x y zs) ->
249 if length cs == length zs then
252 if length cs == length zs then
250 RT.lambda ctx
253 RT.lambda ctx
@@ -409,6 +412,24 @@ isList home name =
418+isSuper :: Super -> Type -> Bool
420+ case iteratedDealias tipe of
423+ Number -> isInt h n || isFloat h n
424+ Comparable -> isInt h n || isFloat h n || isString h n || isChar h n || isList h n && isSuper super (head args)
425+ Appendable -> isString h n || isList h n
426+ CompAppend -> isString h n || isList h n && isSuper Comparable (head args)
412-- DIFF ALIASED RECORD
433-- DIFF ALIASED RECORD