是否可以在Clojure中使用Emm Monad?

时间:2015-12-22 23:37:37

标签: scala haskell clojure

我们在Clojure中看到了Free MonadThe Reader MonadIO Monad

我们已经看到Eff Monad - 这是Haskell中更好的Monad变换器。

我们还看到了Monad Transformersfree Monad transformer in Clojure

Daniel Spiewak寻求通过the Emm Monad in Scala改善Eff Monad。它看起来像这样:

def readName: Task[String] = ???
def log(msg: String): Task[Unit] = ???

type E = Task |: Option |: Base

val effect: Emm[E, String] = for {
  first <- readName.liftM[E]
  last <- readName.liftM[E]

  name <- (if ((first.length * last.length) < 20) Some(s"$first $last") else None).liftM[E]

  _ <- log(s"successfully read in $name").liftM[E]
} yield name

我的问题是:是否可以在Clojure中使用Eff Monad?

0 个答案:

没有答案