Rank-n-types without -XRankNTypes
Consider two modules:
{-# LANGUAGE RankNTypes #-}
module X where
foo :: (forall a. a -> a) -> Int
foo = foo
module Y where
import X
g = foo
Note that Y
does not use RankNTypes
.
Currently, g
is accepted. However, the inferred type of g
is (forall a. a -> a) -> Int
, which cannot be written. We should not allow a value if writing its type requires an additional extension.
Reporting on behalf of Simon PJ.
Edited by Krzysztof Gogolewski