Disabling -fprint-explicit-runtime-reps defaults too much
-fprint-explicit-runtime-reps is disabled, we instantiate all
RuntimeRep variables to
LiftedRep in the entire type. Instead, I think we should do this only for the toplevel foralls - not for the foralls in the contravariant position. Example:
λ> foo :: (forall (r :: RuntimeRep). p r) -> Int; foo _ = 0 λ> :t foo foo :: p 'LiftedRep -> Int
This is not a correct type for
foo. My expectation is that disabling
-fprint-explicit-runtime-reps can give a less specific type for an expression, but not an incorrect one.