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?")