Functional programming 是否有一种编程语言,其中每个函数基本上都作为单独的参与者运行?

Functional programming 是否有一种编程语言,其中每个函数基本上都作为单独的参与者运行?,functional-programming,parallel-processing,actor,Functional Programming,Parallel Processing,Actor,是否有一种编程语言,您不必自己定义参与者——默认情况下,每个函数只是作为一个单独的参与者运行(如果有可用的免费内核,这可能意味着一个单独的线程) 例如,它意味着如果我写一些像 v = fA(x) + fB(y) 然后可以同时计算fA和fB,然后将它们的结果之和分配给v.我不认为有任何极端情况,因为上下文切换和通信开销太大了 我能想到的最接近于你所问的是数据并行编程,在这种编程中,程序大部分是以与顺序版本相同的风格编写的,但在可能的情况下,部分程序是并行运行的 例如Fortran中的循环矢量化和

是否有一种编程语言,您不必自己定义参与者——默认情况下,每个函数只是作为一个单独的参与者运行(如果有可用的免费内核,这可能意味着一个单独的线程)

例如,它意味着如果我写一些像

v = fA(x) + fB(y)

然后可以同时计算fA和fB,然后将它们的结果之和分配给v.

我不认为有任何极端情况,因为上下文切换和通信开销太大了

我能想到的最接近于你所问的是数据并行编程,在这种编程中,程序大部分是以与顺序版本相同的风格编写的,但在可能的情况下,部分程序是并行运行的


例如Fortran中的循环矢量化和Haskell中的“par”魔术。

Haskell的
par
combinator允许您同时计算表达式(这意味着如果有可用的免费内核,可以在单独的线程中进行)。你所要做的就是:

x `par` y

它将同时计算
x
y
,并返回
y
的值。请注意,
x
y
可以是任意复杂度的程序。

焦耳是一种纯异步消息传递语言:

ActorScript是一种纯粹的参与者消息传递语言,但似乎仅作为规范存在: