ayv*_*ngo 5 monads scala tuples
是否有任何scala库使用monad语法丰富基本scala元组.类似于Writer monad的东西,但调整了与元组的使用.
我在找什么:
val pair = (2, "as")
pair >>= (a => point(a+1))
Run Code Online (Sandbox Code Playgroud)
应该等于(3, "as").以及
for (p <- pair) yield (p+1)
Run Code Online (Sandbox Code Playgroud)
是的,Scalaz为元组提供了monad实例(最多Tuple8):
import scalaz.std.anyVal._, scalaz.std.tuple._, scalaz.syntax.monad._
scala> type IntTuple[A] = (Int, A)
defined type alias IntTuple
scala> pair >>= (a => (a+1).point[IntTuple])
res0: (Int, String) = (2,as1)
scala> for (p <- pair) yield (p + 1)
res1: (Int, String) = (2,as1)
Run Code Online (Sandbox Code Playgroud)
(请注意,类型别名不是必需的 - 它只是使用起来point更容易.)