什么是除Option之外的标准Scala monad?

时间:2012-02-13 02:30:37

标签: scala monads

Option monad在Scala中几次变成了一个设施。 Scala标准库中还有其他monad吗?

3 个答案:

答案 0 :(得分:12)

Luigi的回答是正确的,但信息量不大,恕我直言。

所有集合都可以实现monad接口,但其中flatMap的签名不是monad的flatMap。不过,他们大多数时候都会像monad一样行事。 Luigi列出的几乎所有课程都与馆藏有关。

LeftProjectRightProject指的是Either。基本上,Either不是monad,但如果你“投射”其中一个边,那么那边的行为就像一个Option monad。

Parser是一个monad,它构成了解析器组合器的基础。

我承认我不承认ControlContext。我想知道它是否与延续有关(也是monad)。

答案 1 :(得分:11)

您可以通过在API index中查找告诉flatMap来解决此问题。它给出了:

FilterMonadic 
Stream 
StreamWithFilter 
TraversableMethods 
Iterator 
ParIterableLike 
ParIterableLike 
ParIterableViewLike 
TraversableLike 
WithFilter 
MonadOps 
TraversableProxyLike 
TraversableViewLike 
LeftProjection 
RightProjection 
Option 
WithFilter 
Responder 
Zipped 
ControlContext
Parser 

答案 2 :(得分:1)

以下是来自Scalaz的三个源文件的链接:

看看实例声明。这可能会让您了解标准库中的哪些类型满足monadic接口。