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 :: * -> *} {t} {b} {a}. (Functor f, Num t, Num b) => (t -> f a) -> 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.14.0.0, ghc-bignum-1.0, ghc-prim-0.6.1]