Simon Peyton-Jones <[EMAIL PROTECTED]> writes:

> 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.

I'm not convinced by the argument "this allows you to write obfuscated
Haskell".  After all, Haskell is already a wonderful language for
writing obfuscated code; eg. what does the following definition mean

        f f = f

is it a static error (re-use of 'f'), a type error, or a definition of
the identity function?  (it's the latter).

Here's to cleaning up the language, and to more exciting obfuscated
Haskell competitions!

Cheers,
        Simon

-- 
Simon Marlow                                             [EMAIL PROTECTED]
University of Glasgow                       http://www.dcs.gla.ac.uk/~simonm/
finger for PGP public key


Reply via email to