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

Eu tenho passado peloTypeclassopedia para aprender as classes de tipos. Eu estou entendendoAlternative (eMonadPlus, para esse assunto).

Os problemas que estou tendo:

o 'pedia diz que' a classe de tipo Alternativa é para functores Aplicativos que também possuem uma estrutura monóide. ' Eu não entendo isso - a alternativa não significa algo totalmente diferente do Monoid? isto é, eu entendi o ponto da classe de tipos Alternativa como escolher entre duas coisas, enquanto eu entendi que os Monoids eram sobre combinar coisas.

Por que a Alternative precisa de umempty método / membro? Eu posso estar errado, mas parece não ser usado ... pelo menos nocódigo Eu poderia encontrar. E parece não se encaixar no tema da aula - se eu tenho duas coisas e preciso escolher uma, para que preciso de um 'vazio'?

Por que a classe de tipo Alternativa precisa de uma restrição Aplicativa, e por que ela precisa de um tipo de* -> *? Por que não apenas ter<|> :: a -> a -> a? Todas as instâncias ainda poderiam ser implementadas da mesma maneira ... Eu acho (não tenho certeza). Qual o valor que o Monoid não oferece?

qual é o objetivo doMonadPlus tipo de classe? Não posso desbloquear toda a sua bondade usando apenas algo como umMonad eAlternative? Por que não apenas abandoná-lo? (Tenho certeza que estou errado, mas não tenho contraexemplos)

Espero que todas essas perguntas sejam coerentes ...!

Atualização de recompensa: A resposta do @ Antal é um ótimo começo, mas o Q3 ainda está aberto: o que a Alternative fornece que o Monoid não oferece? eu achoesta resposta insatisfatório, uma vez que carece de exemplos concretos e uma discussão específica de como a superioridade da Alternativa a distingue do monóide.

Se é para combinar efeitos do aplicativo com o comportamento do Monoid, porque não apenas:

liftA2 mappend

Isso é ainda mais confuso para mim porque muitas instâncias Monoid são exatamente iguais às instâncias Alternativas.

É por isso que estou procurandoexemplos específicos isso mostra porque a alternativa é necessária, e como é diferente - ou significa algo diferente - de Monoid.

questionAnswers(5)

yourAnswerToTheQuestion