scalaz 中的绑定语法
bind syntax in scalaz
有没有办法在 scalaz 中使用 nice haskell-bind (>>
) 语法,以这种方式编写代码:monad1 >> monad2
?
ToBindOps 需要传递明确的 monad,所以我必须做类似的事情
ToBindOps[F, Unit](monad1) >> monad2
为了获得 >>
的访问权限,这已经是一种矫枉过正,
因为 monad1 >>= (_ => monad2)
更简单。
(在我的特殊情况下,monad1 是 Free[A, B]
,所以我有一个 >>=
"for free",但其他 monad 也经常需要绑定)
是的,您可以通过导入对象 scalaz.syntax.monad
(或 scalaz.syntax.bind
)来实现。这会将 BindOps
的隐式实例引入范围:
import scalaz.effect.IO
import scalaz.syntax.monad._
IO.putStrLn("Hello!") >> IO.putStrLn("How are you?")
有没有办法在 scalaz 中使用 nice haskell-bind (>>
) 语法,以这种方式编写代码:monad1 >> monad2
?
ToBindOps 需要传递明确的 monad,所以我必须做类似的事情
ToBindOps[F, Unit](monad1) >> monad2
为了获得 >>
的访问权限,这已经是一种矫枉过正,
因为 monad1 >>= (_ => monad2)
更简单。
(在我的特殊情况下,monad1 是 Free[A, B]
,所以我有一个 >>=
"for free",但其他 monad 也经常需要绑定)
是的,您可以通过导入对象 scalaz.syntax.monad
(或 scalaz.syntax.bind
)来实现。这会将 BindOps
的隐式实例引入范围:
import scalaz.effect.IO
import scalaz.syntax.monad._
IO.putStrLn("Hello!") >> IO.putStrLn("How are you?")