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