| This sounds great, but it could break old code, of course. This would have a
| different type under Ralf's proposal than Haskell 1.4:
| (id :: a -> a, id :: a -> a)
| However, I think something like it is the only sane way to go. Whatever we do, type
| variables should scope consistently. With proposal "A" as is (such that it wouldn't
| break old code, and just like in hugs 1.3c), a type variable would scope differently
|if
| it was in a pattern verses being in an expression. Ralf's proposal fixes that
|nicely,
| and I don't think the cost in old code here would be very high.
By the way note that currently it is not possible to enfore that two
subexpressions have the same type (asTypeOf works only for some special
cases). So if the intent is that both occurences of `id' have the same
type
(id :: a -> a, id :: a -> a)
does not work.
Ralf