Union Types for Haskell!?
Ashley Yakeley
ashley@semantic.org
Fri, 24 Nov 2000 03:27:42 -0800
At 2000-11-24 03:14, Fergus Henderson wrote:
>> Is there any reason for this restriction
>> in the Haskell type system? Does this lead to losing the principal type
>> property?
>
>If you allow (2) above, there may be serious problems for
>principal types. For example, consider
>
> f x = case x of
> Nothing -> False
> Just _ -> True
>
>What's the most general type for `f'?
>The type `f :: Maybe a -> Bool' is less general than
>e.g. `f :: Union { Maybe a, ... } -> Bool',
>but you certainly don't want to infer the latter type.
There are two different kinds of 'general' here. Informally, you want the
type most general in the type-substitution sense, but probably most
specific in the subtype sense.
--
Ashley Yakeley, Seattle WA