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

Przechodziłem przezTypeclassopedia nauczyć się klas typów. Utknąłem w zrozumieniuAlternative (iMonadPlus, z tego powodu).

Problemy, które mam:

„pedia mówi, że” alternatywna klasa typu jest dla funktorów aplikacyjnych, które również mają strukturę monoidową. ” Nie rozumiem tego - czy Alternative nie oznacza czegoś zupełnie innego niż Monoid? tj. zrozumiałem, że celem klasy typu Alternatywnego jest wybieranie między dwiema rzeczami, podczas gdy rozumiałem Monoids jako łączenie rzeczy.

dlaczego Alternatywa potrzebujeempty metoda / członek? Mogę się mylić, ale wydaje się, że w ogóle nie jest używany ... przynajmniej wkod Mógłbym znaleźć. I wydaje się, że nie pasuje do tematu klasy - jeśli mam dwie rzeczy i muszę wybrać jedną, czego potrzebuję „pustego”?

dlaczego klasa typu Alternatywnego potrzebuje ograniczenia aplikacyjnego i dlaczego potrzebuje pewnego rodzaju* -> *? Dlaczego po prostu nie<|> :: a -> a -> a? Wszystkie instancje mogą być nadal realizowane w ten sam sposób ... Myślę (nie jestem pewien). Jaką wartość zapewnia to, że Monoid nie?

jaki jest cel tegoMonadPlus klasa typu? Czy nie mogę odblokować całej jego dobroci, używając czegoś jako obuMonad iAlternative? Dlaczego tego nie porzucić? (Jestem pewien, że się mylę, ale nie mam żadnych kontrprzykładów)

Mam nadzieję, że wszystkie te pytania są spójne ...!

Aktualizacja Bounty: Odpowiedź @ Antala to świetny początek, ale Q3 jest wciąż otwarty: co zapewnia Alternative, że Monoid nie? znajdujęta odpowiedź niesatysfakcjonujące, ponieważ brakuje w nim konkretnych przykładów, a konkretna dyskusja na temat tego, jak wyższa dobroć Alternatywy odróżnia ją od Monoidu.

Jeśli chodzi o połączenie efektów aplikacyjnych z zachowaniem Monoida, dlaczego nie tylko:

liftA2 mappend

Jest to dla mnie jeszcze bardziej mylące, ponieważ wiele instancji Monoidów jest dokładnie takich samych jak instancje Alternatywne.

Dlatego szukamkonkretne przykłady to pokazuje, dlaczego Alternatywa jest konieczna i jak jest inna - lub oznacza coś innego - od Monoida.

questionAnswers(5)

yourAnswerToTheQuestion