Am Mittwoch, 31. März 2004 14:36 schrieb MR K P SCHUPKE:
> >This syntax would also have the advantage that you can apply different
> >contexts to different constructors.
>
> Er, you can already do that as I just pointed out:
>
> data (Ord a,Num b) => Either a b = Left a | Right b
>
> Note that to constrain the same type variable differently
> for different constructors would be a type error. In other
> words this:
>
>       data Either a =
>               Num a => Left a
>               Ord a => Right a
>
> Is not valid, because (forall a . Num a) is not the same
> type as (forall a . Ord a). So infact the current way
> of writing it as
>
>       data (Num a) => Either a = Left a | Right a
>
> Is better because it does not allow you to make that mistake.
>
>       Regards,
>       Keean.

I cannot see what the mistake is.  What's wrong with having one data 
constructor of type
    (Num a) => a -> Either a
and another of type
    (Ord a) => a -> Either a?
Both are completely independent.

So the current way of writing would not prevent me from making a mistake but 
instead means the lack of a useful feature.

Wolfgang

_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to