Monoidal Functor es aplicativo, pero ¿dónde está la clase de monoide en la definición de aplicativo?

Applicative es un Fundador monoidal:

mappend :: f         -> f   -> f
$       ::  (a -> b) ->   a ->   b
<*>     :: f(a -> b) -> f a -> f b

Pero no veo ninguna referencia sobre Monoid en la definición de la clase de tipo Aplicativo, ¿podría decirme por qué?

Definición

class Functor f => Applicative (f :: * -> *) where
  pure :: a -> f a
  (<*>) :: f (a -> b) -> f a -> f b
  GHC.Base.liftA2 :: (a -> b -> c) -> f a -> f b -> f c
  (*>) :: f a -> f b -> f b
  (<*) :: f a -> f b -> f a
  {-# MINIMAL pure, ((<*>) | liftA2) #-}

No se menciona esa monoide estructural en esta definición, pero cuando lo hace

> ("ab",(+1)) <*> ("cd", 5) 
>("abcd", 6)

Puede ver claramente el uso de un monoide estructural "(,) Cadena" al implementar esta instancia de aplicativo.

Otro ejemplo para mostrar que se utiliza un "Monoide estructural":

Prelude Data.Monoid> (2::Integer,(+1)) <*> (1::Integer,5)

<interactive>:35:1: error:
    • Could not deduce (Monoid Integer) arising from a use of ‘<*>’
      from the context: Num b
        bound by the inferred type of it :: Num b => (Integer, b)
        at <interactive>:35:1-36
    • In the expression: (2 :: Integer, (+ 1)) <*> (1 :: Integer, 5)
      In an equation for ‘it’:
          it = (2 :: Integer, (+ 1)) <*> (1 :: Integer, 5)

Respuestas a la pregunta(3)

Su respuesta a la pregunta