| This is legal in Haskell 98, because the `a' in the inner declaration
is
| implicitly universally quantified. But if the scope of the outer type
| variable `a' extends over the inner type declaration, then the inner
`a'
| will not be locally universally quantified, and the call to `bar' will
|
This has to be one of the most irritating ways a program can fall over.
Can't the Haskell RTS try just a /little/ harder to help the poor
programmer? For example by saying what sort of exception it is, and
(if it's a dynamic exception) what type it has?