On 23/10/12 09:50, I wrote:
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.
"Require at most/least" is ambiguous.
No "Rank2Types" means "I have no rank-2 types" or "I don't require that
you accept rank-2 types".
"Rank2Types" means "I might have rank-2 types" or "At most, I require
that you accept at least rank-2 types" which implies "I don't require
that you accept rank-3 types; I don't require that you reject rank-3 types".
-- Ashley
_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc