Я изучал класс Applicative
в библиотеках Haskell и наткнулся на Alternative
.
Для чего этот класс хорош? Поиск Google не выявил ничего особенно проницательного. И это, кажется, совершенно неуместно, в комплекте, как и с аппликативным пакетом.
Может ли кто-нибудь отправить возможный сценарий, в котором вы бы использовали этот класс?
Ответ 1
Он обычно используется с комбинаторами парсеров. Например, если space
является комбинатором синтаксического анализатора, который соответствует одному символу пробела, many space
будет таким, который будет соответствовать последовательным пробелам.
Я могу согласиться, что это немного неуместно в Control.Applicative
.
Ответ 2
Иногда оператор <|>
весьма полезен:
foldl1 (<|>) [Nothing, Just 5, Just 3]
-- Just 5