{-# LANGUAGE TupleSections #-} module C ( secondM ) where secondM :: Functor m => (b -> m b') -> (a, b) -> m (a, b') secondM :: forall (m :: * -> *) b b' a. Functor m => (b -> m b') -> (a, b) -> m (a, b') secondM b -> m b' f (a x,b y) = (a x,)(b' -> (a, b')) -> m b' -> m (a, b') forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$>b -> m b' f b y