unseemly
unseemly copied to clipboard
Implement existential types
We already have universal types, adding existential types is probably pretty similar. I believe that something like traits should be macro-implementable with existential types (having some way to make types nominal would probably help shield users from seeing a type that looks like ∃T({add: [T T -> T], subtract: [T T -> T]}, T).
Actually, according to TAPL, we can encode existential types as universal types. We might still want to have existential types (I think it's important that types "bottom out" to a readable form (though nominalization might be the better solution to that problem)), but we may be able to get traits without needing existentials.