1
假设结合习惯的方法,我们有包裹在不同的单子两个值(例如尝试和Option):用不同的单子在斯卡拉
val x: Option[Int] = Some(10)
val y: Try[Int] = Success(4)
,我们希望有值的总和。一会写
val z = for {
xval <- x
yval <- y
} yield xval + yval
但它不会被编译,因为类型错误。有没有一种惯用的斯卡拉方式来解决这个问题?
[单子一般不是可组合/组合(http://tonymorris.github.io/blog/posts/monads-do-not-compose /),但是用试试你可以使用.toOption – 2014-09-19 19:59:34
你不会真的在Haskell中合并monad,你只需要将它们堆叠起来,创建更深更深的嵌套 – 2014-09-19 20:00:16
Monads不可组合,寻找Monad变形金刚, 'TryT [Option,A]' – 4lex1v 2014-09-19 20:01:49