On 23/10/12 02:36, Simon Marlow wrote:
I think it means "I require at least rank-2 types".

To clarify, I think it's OK if a compiler accepts a program marked
"Rank2Types" and incorrectly not marked "RankNTypes" when it actually
requires rank-n types.

I don't think I understand why you would want an extension flag to mean "at least" rather than "at most". No other extension flag works that way. If you take that view to its logical conclusion, we would never need to specify any extension flags at all.

Rank2Types is only useful if it really means rank-2 types, which it apparently doesn't, so I'm quite happy to deprecate it. We don't have to actually remove it for a long time, since the cost of maintaining one flag that is a synonym for another flag is small.

Sorry, you're right. It means "I require at most rank-2 types"

Program A is marked "Rank2Types" and not "RankNTypes" and uses only rank-1 types. Program B is marked "Rank2Types" and not "RankNTypes" and uses only rank-1 & rank-2 types.
Program C is marked "Rank2Types" and not "RankNTypes" and uses rank-3 types.

The compiler MUST accept A & B. It SHOULD reject C, but since GHC can't tell the difference, it's acceptable if it accepts it.

-- Ashley

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to