私は自分の言語で並列マップ演算子を定義することに興味があります。式を指定して、リストを新しいリストに変換します。ジェネレーターに似た構文になります。C# や Python のジェネレーターとは異なり、コンパイラーが必要とする場合 (たとえば、アイドル状態のコアがあり、リストが非常に大きい場合)、並列で評価される可能性があります。順次実行されるものwitheachと区別するために呼び出されます。foreach
たとえば、次のように考えてください。
var f = function(int x) : int { return x * 2; }
var my_list = 0..1000000;
var my_mapped_list = witheach (i in mylist) yield f(i);
私の質問は、副作用を入れる可能性のあるプログラマーにとって、これはあまりにも直感的ではないのfでしょうか? もちろん、ドキュメントではこれを行うべきではないと言いたいのですが、ほとんどのプログラマーは言語ドキュメントを読みません。:-)
より大きな問題は、現代のプログラマーが言語の暗黙的な並列リスト処理セマンティクスに適応できるか、それともより明示的にする必要があるかということです。