有没有办法在scalaz中使用漂亮的haskell-bind(>>
)语法来编写代码:monad1 >> monad2
?
ToBindOps需要传递显式monad,所以我必须做类似的事情
ToBindOps[F, Unit](monad1) >> monad2
在oder中访问>>
,这已经是一种矫枉过正的行为,
因为monad1 >>= (_ => monad2)
更简单。
(在我的特殊情况下,monad1是Free[A, B]
,所以我有一个>>=
“免费”,但是对于其他monad也经常弹出绑定的需要。
答案 0 :(得分:2)
是的,您可以通过导入对象scalaz.syntax.monad
(或scalaz.syntax.bind
)来实现。这将为范围带来BindOps
的隐式实例:
import scalaz.effect.IO
import scalaz.syntax.monad._
IO.putStrLn("Hello!") >> IO.putStrLn("How are you?")