TYPE SIGNATURES test1 :: forall (f :: * -> *). Applicative f => (Int -> f Int) -> f Int test1a :: forall (f :: * -> *). Applicative f => (Int -> f Int) -> f Int test1b :: forall (f :: * -> *). Applicative f => (Int -> f Int) -> f Int test1c :: forall (f :: * -> *). Applicative f => (Int -> f Int) -> f Int test2 :: forall (f :: * -> *) t b. (Applicative f, Num t, Num b) => (t -> f b) -> f b test2a :: forall (f :: * -> *) t b. (Functor f, Num t, Num b) => (t -> f b) -> f b test2b :: forall (m :: * -> *) t a. (Monad m, Num t) => (t -> a) -> m a test2c :: forall (f :: * -> *) t b. (Functor f, Num t, Num b) => (t -> f b) -> f b test2d :: forall (f :: * -> *) t1 b t2. (Functor f, Num t1, Num b) => (t1 -> f t2) -> f b test3 :: forall (m :: * -> *) t1 t2 a. (Monad m, Num t1) => (t1 -> m t2) -> (t2 -> t2 -> m a) -> m a test4 :: forall (m :: * -> *) t a1 a2. (Monad m, Num t) => (t -> m a1) -> (a1 -> a1 -> m a2) -> m a2 test5 :: forall (m :: * -> *) t a1 a2. (Monad m, Num t) => (t -> m a1) -> (a1 -> a1 -> m a2) -> m a2 test6 :: forall (m :: * -> *) a p. (Monad m, Num (m a)) => (m a -> m (m a)) -> p -> m a Dependent modules: [] Dependent packages: [base-4.12.0.0, ghc-prim-0.5.3, integer-gmp-1.0.2.0]