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

Reply via email to