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

Ich habe das durchgegangenTypeclassopedia um die typklassen zu lernen. Ich verstehe nichtAlternative (undMonadPlusfür diese Angelegenheit).

Die Probleme, die ich habe:

Das 'Pedia sagt, dass "die alternative Typenklasse für anwendbare Funktoren ist, die auch eine monoide Struktur haben." Ich verstehe das nicht - bedeutet Alternative nicht etwas völlig anderes als Monoid? d.h. ich verstand den Punkt der alternativen Typenklasse als Auswahl zwischen zwei Dingen, während ich Monoide als das Kombinieren von Dingen verstand.

Warum braucht Alternative eineempty Methode / Mitglied? Ich kann mich irren, aber es scheint überhaupt nicht verwendet zu werden ... zumindest in derCode Ich könnte finden. Und es scheint nicht zum Thema der Klasse zu passen - wenn ich zwei Dinge habe und eines auswählen muss, wofür brauche ich ein 'Leer'?

Warum benötigt die alternative Typklasse eine anwendbare Einschränkung und warum benötigt sie eine Art von* -> *? Warum nicht einfach haben<|> :: a -> a -> a? Alle Instanzen könnten immer noch auf die gleiche Weise implementiert werden ... Ich denke (nicht sicher). Welchen Wert bietet es, dass Monoid nicht?

Was ist der Sinn derMonadPlus Typenklasse? Kann ich nicht all seine Güte freischalten, indem ich nur etwas als beides benutze?Monad undAlternative? Warum nicht einfach den Bach runter? (Ich bin sicher, dass ich falsch liege, aber ich habe keine Gegenbeispiele)

Hoffentlich sind all diese Fragen zusammenhängend ...!

Bounty-Update: @ Antals Antwort ist ein guter Anfang, aber Q3 ist noch offen: Was bietet Alternative, was Monoid nicht bietet? ich findediese Antwort unbefriedigend, da es keine konkreten Beispiele und eine spezifische Diskussion darüber gibt, wie die höhere Güte von Alternative es von Monoid unterscheidet.

Wenn es darum geht, die Effekte der Anwendung mit dem Verhalten von Monoid zu kombinieren, warum nicht einfach:

liftA2 mappend

Dies ist für mich noch verwirrender, da viele Monoid-Instanzen genau den alternativen Instanzen entsprechen.

Deshalb suche ichspezifische Beispiele Das zeigt, warum Alternative notwendig ist und wie sie sich von Monoid unterscheidet oder etwas anderes bedeutet.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage