在scalaz中绑定语法

时间:2015-08-27 20:20:34

标签: bind implicit-conversion scalaz

有没有办法在scalaz中使用漂亮的haskell-bind(>>)语法来编写代码:monad1 >> monad2

ToBindOps需要传递显式monad,所以我必须做类似的事情  ToBindOps[F, Unit](monad1) >> monad2 在oder中访问>>,这已经是一种矫枉过正的行为, 因为monad1 >>= (_ => monad2)更简单。

(在我的特殊情况下,monad1是Free[A, B],所以我有一个>>=“免费”,但是对于其他monad也经常弹出绑定的需要。

1 个答案:

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