equal
deleted
inserted
replaced
680 val (T, T_args) = |
680 val (T, T_args) = |
681 (* Aggressively merge most "hAPPs" if the type system is unsound |
681 (* Aggressively merge most "hAPPs" if the type system is unsound |
682 anyway, by distinguishing overloads only on the homogenized |
682 anyway, by distinguishing overloads only on the homogenized |
683 result type. *) |
683 result type. *) |
684 if s = const_prefix ^ explicit_app_base andalso |
684 if s = const_prefix ^ explicit_app_base andalso |
|
685 length T_args = 2 andalso |
685 not (is_type_sys_virtually_sound type_sys) then |
686 not (is_type_sys_virtually_sound type_sys) then |
686 T_args |> map (homogenized_type ctxt nonmono_Ts level) |
687 T_args |> map (homogenized_type ctxt nonmono_Ts level) |
687 |> (fn Ts => let val T = hd Ts --> nth Ts 1 in |
688 |> (fn Ts => let val T = hd Ts --> nth Ts 1 in |
688 (T --> T, tl Ts) |
689 (T --> T, tl Ts) |
689 end) |
690 end) |