| GHC is a little bit more permissive than Hugs here; 
| but not as much as you would like.  I'm a bit reluctant
| to encourage 
|       f :: Int -> (forall a. a->a)
| 
| because this really is a different type in GHC to
|       f :: forall a. Int -> a -> a

...
| I knew that you would argue along this line ;-). But I hope that the
| design of the source language is not influenced by the design of the
| intermediate language.

I agree strongly.  But to say that two types are isomorphic is
not the same as saying that they are the same type.  After all
we don't identify curried and uncurried function types; and arguably
that too is merely an implementation distinction which could be
resolved with few compiler-inserted coercions.

I'm not saying this is a bad idea, just that it isn't absolutely
clearly a good one.

Simon

Reply via email to