並列プログラミングの抽象化を提供するRivertrailのような Javascript フレームワークに興味がありますが、作業を行うために渡す関数に外部の副作用がない場合にのみ、明確に定義されたセマンティクスを提供します。
渡された関数に副作用がないことを確認する方法があるかどうか疑問に思っていますか? または、関数から環境内のすべてを非表示にする (変更するものがないようにするため)? __attribute__ ((pure))
または、環境「const」ですべてを一時的に宣言します(ただし、関数の定義の範囲のためだけですか?)(または、gccで単に宣言するのと同等のことを私に与える他のクレイジーなアイデア。)
並列プログラミングは、「純粋な」関数型プログラミングが実際に効果を発揮できる場所の 1 つです。並列プログラムの合理的なセマンティクスを定義する純粋な関数がなければ、非常に困難になります (C++ のセマンティクスをチェックしてください。そこでは、データ競合が何であるかを定義して、データ競合があるプログラムは未定義であると宣言できるようにする必要がありました)。
可能であれば、誰かがこれを役立つと思う他の場所を想像できます。たとえば、Web ページのユーザーが、クエリ中に特定の条件をチェックする、保証された純粋で副作用のない Javascript 関数を渡すことができるようにすると便利な場合があります。