观看演示文稿Composable Futures with Akka 2.0之后,我很想知道Akka实施期货和代理商对Clojure的实施带来了哪些额外的功能。
答案 0 :(得分:3)
“Akka的特工受到Clojure特工的启发。”这是Akka代理文档中的第一行,希望它能清除代理部分的问题。就期货而言,它们在概念上是相同的(即在单独的线程上调用操作)。底层实现基于java.util.concurrent
,因此两者都使用相同的底层基础架构。
Scala部分:
可组合这个词的重要组成部分(代理商和期货)。如果你去akka文档,你会发现你可以在Akka期货上使用更高阶的函数,如map
,filter
等,即对未来的map
操作会返回另一个未来(同样适用于filter
)。这使您可以轻松地组合/链接期货并在最后的未来等待最终价值。现在,所有这一切都是可能的,因为map
,filter
,for
理解等都基于Scala(monadic)API,它基本上允许任何新类型提供这些函数的特定实现。
Clojure部分:
现在,在事情的背后,你知道map
,filter
等只是在集合上工作的正常函数,即它们可以在可以遍历的东西上工作,因此与Monadic API不同。斯卡拉。所以在Clojure中,你将使用不同的方法来构建期货,毕竟Clojure(或者Lisp)在许多方面允许可组合性