私はPrologであなたが次のようなことをすることができることを知っています
someFunction(List) :-
someOtherFunction(X, List)
doSomethingWith(X)
% and so on
これは、リスト内のすべての要素を反復処理するわけではありません。代わりに、異なる「マシン」に分岐し(複数のスレッドを使用する、単一のスレッドでバックトラックする、パラレルユニバースを作成するなど)、Xの可能な値ごとに個別に実行してsomeOtherFunction(X, List)
trueを返します。
(私はそれがこれをどのように行うのか分かりませんが、それは質問にとって重要ではありません)
私の質問は、 他にどのような非決定論的プログラミング言語が出回っているのかということです。 非決定論は、不変の変数を持つ言語でマルチスレッドを実装するための最も簡単で論理的な方法のようですが、これが行われるのを見たことがありません-なぜこの手法がより一般的ではないのですか?