我一直在阅读和思考这个问题。嗡嗡声似乎是在多核的未来,函数式语言将变得更加流行。我是函数式编程的相对菜鸟。我唯一的接触是学术性的,没有什么复杂到可以真正让这类语言通过它的步伐。
因此,据我了解,纯函数可以轻松透明地并行化。这是一个很棒的功能,因为它意味着编写线程代码没有任何麻烦。但是,它似乎对串行代码没有太大帮助。
Example:
fooN( ... (foo3(foo2(foo1(0)))))
像这样的串行调用似乎是一个常见的,有时是不可避免的问题。对我来说,这些是并行化如此困难的根源。有些任务只是(或似乎是)高度连续的。拥有“功能心态”是否可以让您更好地分解一些看似连续的任务?是否有任何现有的函数式语言提供透明的机制来更好地并行化高度串行的代码?最后,函数式语言本质上是否比 OO 或命令式语言更具可并行性,为什么?