rank-2 vs. arbitrary rank types

Ross Paterson ross at soi.city.ac.uk
Fri Feb 2 05:02:53 EST 2007

On Fri, Feb 02, 2007 at 08:35:01AM +0000, Simon Peyton-Jones wrote:
> * Rank-N is really no harder to implement than rank-2.  The "Practical
> type inference.." paper gives every line of code required.  The design
> is certainly much cleaner and less ad-hoc than GHC's old rank-2 design,
> which I dumped with considerable relief.
> * I think it'd be a pity to have an arbitrary rank-2 restriction.
> Rank-2 allows you to abstract over a polymorphic function.  Well,
> it's not too long before you start wanting to abstract over a rank-2
> function, and there you are.

So is the proposed candidate the system described in the "Practical Type
Inference" paper, with contravariant subsumption, bi-directional inference
judgements (rather than boxes), no impredicativity, etc?  As I recall the
treatment of application expressions there (infer type of the function,
then check the argument) was considered a bit restrictive.  (It forbids
runST $ foo, for example.)

Is there a plan for GHC to have a mode that implements the proposed system?

More information about the Haskell-prime mailing list