blob: 7e3bfc146ba789d33d8a7df74d652153c1ac669d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
{-# LANGUAGE Rank2Types, ScopedTypeVariables #-}
-- Trac #2494, should compile ok
module Foo where
foo :: (forall m. Monad m => Maybe (m a) -> Maybe (m a)) -> Maybe a -> Maybe a
foo _ x = x
{-# RULES
"foo/foo"
forall (f :: forall m. Monad m => Maybe (m a) -> Maybe (m a))
(g :: forall m. Monad m => Maybe (m a) -> Maybe (m a)) x.
foo f (foo g x) = foo (f . g) x
#-}
|