我已经读过,函数式编程非常适合多线程程序,因为它带来了编程语言范例(不变性,无副作用函数)。 我还读到多线程程序通常是非不确定的。
鉴于stakx对类似(但不同)问题的回答,这是我的问题:
如果使用函数式编程语言进行编码,多线程程序是否可以确定?
答案 0 :(得分:0)
当然。任何程序都可以确定。例如,
Thread.new do
1 + 2
end
Thread.new do
2 + 3
end
是确定性的,因为它不会以任何方式影响宇宙。这就是你订购副作用的方式。如果你没有可变结构,那么只能预测输入输出和进程间通信的顺序。但是如果你问的是每个函数程序是否都是确定性的,答案是否定的:当你的线程进行通信或做IO时,你需要一些明确的调度来使它每次都能正常工作。