对于我而言,仔细阅读Haskell的文档总是很痛苦,因为您所获得的有关某个功能的所有信息通常仅不过是:f a -> f [a]
这可能意味着很多事情。
与<|>
功能一样。
我所得到的就是:(<|>) :: f a -> f a -> f a
这是“关联二进制操作” ...
通过检查,Control.Applicative
我了解到它确实与实现无关,取决于实现。
instance Alternative Maybe where
empty = Nothing
Nothing <|> r = r
l <|> _ = l
好的,所以如果没有左,它就返回右,否则它就返回左,陷阱。。这使我相信它是一个“左或右”运算符,考虑到它的使用|
和|
作为“或”的历史用法,这有点有意义”
instance Alternative [] where
empty = []
(<|>) = (++)
除了这里,它只是调用list的串联运算符...分解我的想法...
那么那个功能到底是什么呢?有什么用?它在宏伟的计划中适合什么地方?
<|>
。“理解”它们的正确方法是理解具体实例。也就是说,如果你想使用<|>
上Maybe
,那么了解它的Maybe
...