Dan*_*ral 11
所有集合都是monad(这是一般声明,而不是Scala特定的集合),或者"monad"取决于你想要的严格程度.Scala也有Optionmonad,以及左右投影Either.每当你看到他们的理解时,你就可以看到他们的monadic方面.
Scala中monad的一个更微妙的例子是解析器组合器.它更加微妙,因为运算符隐藏了在语法中看起来更好的同义词背后的monadic操作.
def optionAdd(x:Option[Int], y:Option[Int]):Option[Int] =
for(xx <- x; yy <- y) yield xx+yy
Run Code Online (Sandbox Code Playgroud)
我不敢在java版本上浪费时间,特别是因为比我聪明的人已经做过http://functionaljava.org/examples/1.5/#Option.bind.链接中的示例基本上optionAdd以无限简洁的方式进行.
| 归档时间: |
|
| 查看次数: |
5416 次 |
| 最近记录: |