浏览 Haskell 的文档对我来说总是有点痛苦,因为你获得的关于一个函数的所有信息通常只是:f a -> f [a]
这可能意味着任何数量的东西。
就像<|>
函数的情况一样。
我得到的只是这个:(<|>) :: f a -> f a -> f a
它是一个“关联二元运算” ......
经过检查,Control.Applicative
我了解到它会根据实施情况做看似无关的事情。
instance Alternative Maybe where
empty = Nothing
Nothing <|> r = r
l <|> _ = l
好的,所以如果没有左则它返回右,否则它返回左,明白了.. 这让我相信它是一个“左或右”运算符,考虑到它使用|
and|
的历史用法为“或”,这有点道理"
instance Alternative [] where
empty = []
(<|>) = (++)
除了这里它只是调用列表的连接运算符......打破我的想法......
那么这个功能到底是什么?它有什么用?它在宏伟的计划中处于什么位置?