High Order Function with Type Parameter

Thanks for teaching us the definition of structural versus nominal types (which I and I presume most others already know). Any point you wanted to make?

I don't mean naming the intersection or union. I mean the intersection or union must always contain only nominal types.

Actually I think I can guess what point you intended to make. Based on our private discussions, you seem to have a mental model of first-class intersections and unions as being structural without limitation. You seem to presume that the compiler should infer the entire graph of low-level structural intersections and unions from the bottom up to principal typings. I have already explained upthread that can't possibly be sound (which you also agree and even pointed out to me first).

I am trying to propose that in order to use first-class intersections and unions effectively, we need to only use them to structure nominal types. I don't mean naming the intersection or union. I mean the intersection or union must always contain only nominal types.

Edit: and I am thinking of an exception to allow structural inference bottom-up for expressions. The constraint is at the function signature where it must converge to the annotations which must be nominal quantification.