Scala Monad - 完整的例子

use*_*235 7 scala

有没有人有一个Scala monad的完整工作示例来解决现实世界的问题并且与用Java编写的相同代码进行比较?

Dan*_*ral 11

所有集合都是monad(这是一般声明,而不是Scala特定的集合),或者"monad"取决于你想要的严格程度.Scala也有Optionmonad,以及左右投影Either.每当你看到他们的理解时,你就可以看到他们的monadic方面.

Scala中monad的一个更微妙的例子是解析器组合器.它更加微妙,因为运算符隐藏了在语法中看起来更好的同义词背后的monadic操作.


ped*_*rla 9

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以无限简洁的方式进行.