是否有R5RS或更高的方案实现,与并行化有关?例如,如果我说要做:

(map (lambda (x) 
        (pure-functional-stuff x))
     '(1 3 5 7 11 13))
.

如果机器可以这样做,它将同时处理1,3,5和7?这应该是功能规划的重要优势之一,但我找不到维护,最新的计划。除非我断言该功能没有副作用,否则我会很好。

有帮助吗?

解决方案

我是一个架构的开发人员,我认为这是您正在寻找的方案。该项目仍在开发和维护。今年年初,我发布了一个提高与R5R兼容性的版本。不幸的是,Schemik是一个研究项目,专注于表达评估的过程,因此,其标准库仍然相对较小。是否有任何特定的功能在架构中错过了?

其他提示

球拍期货,做一些非常相似的事情,并且在不久的将来也将有第二种并行性(它将被称为”地方“)。

事实证明,您并不真正希望编译器尝试并行化所有内容,因为即使在做简单的情况下,您最终最终会浪费时间协调努力,

(map add1 '(1 2 3))
.

在一个线程上刚刚做得更快。然而,这些天的许多功能语言使您能够在“Add1”实际上是“真正长计算”时进行这种并行。每种语言都有自己的方法,但我建议使用期货在球拍中利用多个核心。

虽然编译器自动为您决定的东西很好,但它不是一个糟糕的权衡,可以将“地图”更改为“PMAP”,在那里您认为它可能有所帮助,而不是处理其他地方的放缓,因为编译器太雄心勃勃。

作为基本的东西

(define (pmap f xs)
  (map touch (map (λ(x) (future (λ() (f x)))) xs)))
. 急性使用时,可以让你变得非常远,但是你应该尝试用来划分你的数据来喂给并行线程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top