是否有任何将元组视为单子的scala库
Is there any scala library that treat tuples as monads
是否有任何 scala 库可以使用 monad 语法丰富基本的 scala 元组。类似于 Writer monad,但针对元组的使用进行了调整。
我要找的东西:
val pair = (2, "as")
pair >>= (a => point(a+1))
应等于 (3, "as")
。以及
for (p <- pair) yield (p+1)
是的,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)
(请注意,类型别名不是必需的——它只是使使用 point
更容易一些。)
是否有任何 scala 库可以使用 monad 语法丰富基本的 scala 元组。类似于 Writer monad,但针对元组的使用进行了调整。
我要找的东西:
val pair = (2, "as")
pair >>= (a => point(a+1))
应等于 (3, "as")
。以及
for (p <- pair) yield (p+1)
是的,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)
(请注意,类型别名不是必需的——它只是使使用 point
更容易一些。)