haw*_*eye 5 haskell scala clojure
我们已经在 Clojure 中看到了Free Monad、The Reader Monad和IO Monad。
我们已经看到了Eff Monad——它是 Haskell 中更好的 Monad 转换器。
我们还看到了Monad Transformers和Clojure 中的免费 Monad 转换器 。
Daniel Spiewak试图通过Scala 中的 Emm Monad改进 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
Run Code Online (Sandbox Code Playgroud)
我的问题是:是否可以在 Clojure 中执行 Eff Monad?
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |