We saw the Free Monad , Modern Reader and IO Monad in Clojure.
We saw Eff Monad - this is the best Monad transformer in Haskell.
We also saw Monad Transformers , and free Monad in Clojure .
Daniel Spivak tried to improve Eff Monad, Emm Monad in Scala . It looks like this:
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
My question is: Can I make Eff Monad in Clojure?
source
share