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

Я проходил черезTypeclassopedia учить классы типа. Я застрял пониманиеAlternative (а такжеMonadPlus, в этом отношении).

Проблемы, которые у меня возникают:

«Педия» говорит, что «класс альтернативных типов предназначен для аппликативных функторов, которые также имеют моноидную структуру». Я не понимаю, не означает ли «Альтернатива» нечто совершенно отличное от «Моноида»? Т.е. я понимал смысл класса альтернативных типов как выбор между двумя вещами, тогда как я понимал моноиды как объединение вещей.

почему Альтернатива нужнаempty Способ / член? Я могу ошибаться, но это, кажется, не используется вообще ... по крайней мере, вкод Я мог бы найти. И это, кажется, не соответствует теме класса - если у меня есть две вещи, и мне нужно выбрать одну, для чего мне нужен «пустой»?

почему классу типа Alternative требуется аппликативное ограничение, и почему ему нужен вид* -> *? Почему бы просто не иметь<|> :: a -> a -> a? Все экземпляры могут быть реализованы одинаково ... Я думаю (не уверен). Какую ценность это обеспечивает, что Monoid не делает?

какой смыслMonadPlus тип класс? Разве я не могу открыть все его достоинства, просто используя что-то какMonad а такжеAlternative? Почему бы просто не бросить это? (Я уверен, что ошибаюсь, но у меня нет никаких контрпримеров)

Надеюсь, все эти вопросы являются связными ...!

Обновление Bounty: @ Ответ Антала - отличное начало, но Q3 все еще открыт: что предлагает Альтернатива, чего нет у Monoid? я нахожуэтот ответ неудовлетворительный, поскольку в нем отсутствуют конкретные примеры и конкретное обсуждение того, как более высокая доброта Альтернативы отличает его от моноида.

Если это сочетать аппликативные эффекты с поведением Моноида, почему бы просто:

liftA2 mappend

Это еще больше сбивает меня с толку, потому что многие экземпляры Monoid точно такие же, как экземпляры Alternative.

Вот почему я ищуконкретные примеры это показывает, почему альтернатива необходима, и как она отличается - или означает что-то другое - от моноида.

Ответы на вопрос(5)

Ваш ответ на вопрос