| > >* The ability to put foralls *after* a function arrow is definitely
| > >useful, especially
| > >when type synonyms are involved.  Thus
| > >      type T = forall a. a->a
| > >      f :: T -> T
| > >We should consider this ability part of the rank-N proposal. The
| > >"Practical type
| > >inference" paper deal smoothly with such types.  GHC's rank-2 design had an
| > >arbitrary and unsatisfactory "forall-hoisting" mechanism which I hated.
|
| Without impredicativity, putting forall's in type synonyms raises extra
| issues, e.g. a programmer must fully expand the definition of a type T
| to know whether Maybe T is a legal type.

But similar things are already true.  Is this legal:

        f :: T
        f x = x

Well, you have to expand T to find out.

Simon
_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime

Reply via email to