9

首先说我有一个问题,计算 10 亿位 Pi,计算一个大数的阶乘,或者对一个大列表执行合并排序。我想将问题分成更小的任务,并同时执行每个任务并组合结果。首先,这种类型的并发的名称是什么,您将如何在 Clojure 中实现它?

4

1 回答 1

4

在当前的 Clojure 1.4 中,您可以使用 Maybe 、 或 来完成pmappcalls操作pvalues。该pmap函数是 的并行版本map,而实际上pcallspvalues没有类似的非并行版本(尽管我认为list是 的“非并行版本” pvalues)。

但是,对于您描述的问题,听起来您希望使用并行版本的reduce. Clojure 1.2 中有一个旧的(见这里),我从未使用过,所以我无法谈论它的实用性。

与 Clojure 1.5 一起出现的将是这个新的“reducers”库,Rich Hickey 在这里发表了博客。在这里,fold似乎是reduce.

于 2012-08-31T16:25:00.280 回答