On 2006-04-08, C Rodrigues <[EMAIL PROTECTED]> wrote:
> 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

Have you tried 
run (X f) x = f x
?


-- 
Aaron Denney
-><-

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to