Haskell - Что такое Control.Applicative.Alternative хорошо?

Я изучал класс Applicative в библиотеках Haskell и наткнулся на Alternative.

Для чего этот класс хорош? Поиск Google не выявил ничего особенно проницательного. И это, кажется, совершенно неуместно, в комплекте, как и с аппликативным пакетом.

Может ли кто-нибудь отправить возможный сценарий, в котором вы бы использовали этот класс?

Ответ 1

Он обычно используется с комбинаторами парсеров. Например, если space является комбинатором синтаксического анализатора, который соответствует одному символу пробела, many space будет таким, который будет соответствовать последовательным пробелам.

Я могу согласиться, что это немного неуместно в Control.Applicative.

Ответ 2

Иногда оператор <|> весьма полезен:

foldl1 (<|>) [Nothing, Just 5, Just 3]
-- Just 5