[Haskell-cafe] Rank 2 polymorphism in pattern matching?
C Rodrigues
red5_2 at hotmail.com
Sat Apr 8 14:31:03 EDT 2006
This counterintuitive typechecking result came up when I wrote a wrapper
around runST. Is there some limitation of HM with respect to type checking
pattern matching?
data X a b = X (a -> a)
run :: forall a. (forall b. X a b) -> a -> a
-- This definition doesn't pass the typechecker
run (X f) = f
-- But this definition works
run x = (\(X f) -> f) x
More information about the Haskell-Cafe
mailing list