> Consider the function
> 
>       t :: T a => T a -> T a
> 
> I think that it's far from clear what each of the T's mean!
> Worse, in Haskell 2 we'll also have
> 
>       t :: T T => T a -> T a
> 
> In (T T) one is class and the other is a type constructor.

Let's leave the language as it is: class names and type names must be
distinct.  Rationale: the above examples show that a change might have
questionable consequences.  Recall that the change requires adding the
label `class' to signatures, but not adding the label `type'; it feels
more like a convenient hack than a well-rounded design.  Rather than
make a questionable change now, let's leave it for Haskell 2 and get it
right there.  -- P


Reply via email to