Confused by the meaning of the 'Alternative' type class and its relationship to other type classes

He estado pasando por elTypeclassopedia Para aprender las clases de tipo. Estoy atrapado entendiendoAlternative (yMonadPlus, para esa materia).

Los problemas que estoy teniendo:

the 'pedia dice que "la clase de tipo Alternativa es para los funtores aplicativos que también tienen una estructura monoide". No entiendo esto. ¿Alternativa no significa algo totalmente diferente de Monoid? es decir, entendí el punto de la clase de tipo Alternativo como elegir entre dos cosas, mientras que entendí que los Monoides se refieren a la combinación de cosas.

¿Por qué Alternativa necesita unaempty método / miembro? Puede que esté equivocado, pero parece que no se usa en absoluto ... al menos en elcódigo Lo podría encontrar. Y parece que no encaja con el tema de la clase: si tengo dos cosas y necesito elegir una, ¿para qué necesito un 'vacío'?

¿Por qué la clase de tipo Alternativa necesita una restricción aplicativa y por qué necesita una clase de* -> *? ¿Por qué no solo tener<|> :: a -> a -> a? Todas las instancias podrían implementarse de la misma manera ... creo (no estoy seguro). ¿Qué valor proporciona que Monoid no?

cuál es el punto de laMonadPlus tipo de clase? ¿No puedo desbloquear toda su bondad usando algo tanto como unMonad yAlternative? ¿Por qué no simplemente tirarlo? (Estoy seguro de que estoy equivocado, pero no tengo ningún contraejemplo)

Esperemos que todas esas preguntas sean coherentes ...!

Actualización de Bounty: la respuesta de @Antal es un gran comienzo, pero el tercer trimestre aún está abierto: ¿qué ofrece Alternative que no hace Monoid? Encuentroesta respuesta insatisfactorio ya que carece de ejemplos concretos, y una discusión específica de cómo la bondad superior de Alternative lo distingue de Monoid.

Si es para combinar los efectos del aplicativo con el comportamiento de Monoid, ¿por qué no simplemente:

liftA2 mappend

Esto es aún más confuso para mí porque muchas instancias de Monoid son exactamente iguales a las instancias alternativas.

Por eso estoy buscandoejemplos específicos eso demuestra por qué Alternativa es necesaria y cómo es diferente, o significa algo diferente, de Monoid.

Respuestas a la pregunta(5)

Su respuesta a la pregunta