Applicative functors as monoidal functors
问题 As mentioned in Hackage for Applicative Functors, they are strong lax monoidal functors. So why doesn't their definition in Haskell show it like so : class Functor f => MonoidalApplicative f where mult :: f a -> f b -> f (a,b) unit :: a -> f a starAp :: f (a -> b) -> f a -> f b starAp h x = fmap (uncurry ($)) (mult h x) <*> (starAp) is easily reconstructed in terms of the multiplication and this definition looks simpler to me. For exemple, here is the Maybe instance : instance