scala - Akka 中的 Futures 和 Agents 比 Clojure 的同类产品有什么优势?

标签 scala clojure akka future

看过介绍Composable Futures with Akka 2.0 ,我很想知道 Futures 和 Agents 的 Akka 实现比 Clojure 的有哪些附加功能。

最佳答案

“Akka 中的代理受到 Clojure 中代理的启发。”这是关于 Akka 的代理文档中的第一行,希望它能解决代理部分的问题。就 future 而言,它们在概念上是相同的(即在单独的线程上调用操作)。底层实现基于 java.util.concurrent,因此两者使用相同的底层基础设施。

Scala 部分: 可组合 词如何发挥作用的重要部分(对于代理和 future )。如果你去 akka 文档,你会发现你可以在 Akka future 上使用高阶函数,如 mapfilter 等,即 map 对 future 的操作返回另一个 future (对于 filter 也是类似的)。这使您可以轻松地组合/链接 future 并等待最终值(value)的最终 future 。现在,所有这些都是可能的,因为 mapfilterfor comprehension 等都是基于 Scala (monadic) API,它基本上允许任何提供这些功能的特定实现的新类型。

Clojure 部分: 现在在 clojure 方面,您知道 mapfilter 等只是处理集合的普通函数,即它们处理可以遍历的东西,因此是不同的来自 scala 的 Monadic API 的概念。所以在 Clojure 中,你将使用不同的方式来组合 future,毕竟 Clojure(或一般的 Lisp)允许以多种方式进行组合

关于scala - Akka 中的 Futures 和 Agents 比 Clojure 的同类产品有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16336145/

相关文章:

scala - Google的OpenID身份验证随机失败

scala - 如何使用 Docker 安装 Actor Platform

Scala下划线解释

Clojure 映射到矢量

json - 如何在 AKKA-HTTP 中将 Future[Option[Foo]] 类编码为 JSON

class - Clojure:为现有的 java 类实现 Seqable

java - 将Akka与现有Java项目集成的示例

scala - 不能总是在优雅停止后重用 Actor 的名字

java - 如何向非 Actor 世界公开 Akka Actor 的不可变消息?

clojure - 如何在 Clojure 中惯用地打印货币?