pureをControl.Applicative.LiftA0と思う
引数が3個の場合
*> :t liftA3 liftA3 :: Applicative f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d
引数が2個の場合
*> :t liftA2 liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c
引数が1個の場合 (あたかもLiftA1)
*> :t liftA liftA :: Applicative f => (a -> b) -> f a -> f b
引数が1個の場合 (演算子版)
*> :t (<*>) (<*>) :: Applicative f => f (a -> b) -> f a -> f b
引数が1個の場合 (ApplicativeはFunctorなので)
*> :t fmap fmap :: Functor f => (a -> b) -> f a -> f b
引数が0個の場合 (あたかもLiftA0)
*> :t pure pure :: Applicative f => a -> f a