我正在查看Haskell库中的Applicative
类,并偶然发现了Alternative
。
这个类有什么好处?谷歌搜索没有发现任何特别有见地的东西。而且它似乎完全不合适,因为它与Applicative包捆绑在一起。
请问有人能够提供一个可能使用这个类的场景吗?
我正在查看Haskell库中的Applicative
类,并偶然发现了Alternative
。
这个类有什么好处?谷歌搜索没有发现任何特别有见地的东西。而且它似乎完全不合适,因为它与Applicative包捆绑在一起。
请问有人能够提供一个可能使用这个类的场景吗?
这通常与解析器组合子一起使用。例如,如果space
是一个匹配单个空格字符的解析器组合子,many space
将匹配连续的空格。
我同意它在Control.Applicative
中有些不合适。
<|>
运算符非常有用:foldl1 (<|>) [Nothing, Just 5, Just 3]
-- Just 5
First
单子和mconcat
来完成这个任务。这种方法还可以很好地推广到其他的Maybe
单子中。 - hammarfoldl1
在某个地方使用了一个明智的默认值 (foldl (<|>) Nothing
)。当你的答案崩溃时,你会怎么做? :D - Rotsorfoldl (<|>) empty
,假设empty
是(<|>)
的身份识别标志。 - sam boosalisData.Foldable.asum
也提供了这个功能。 - abhillman
Applicative
上的幺半群,与MonadPlus
和ArrowPlus
具有相同的模式,它们都与它们所基于的类共享一个模块。为了保持一致性,它“应该”被称为ApplicativePlus
,但那是一个不好听的名字。 - C. A. McCannApplicativePlus
命名为Alternative
并不是一件好事,因为后者具有限制其范围的内涵。 - Anupam Jain