純粋なコードと純粋でないコードを分離するために IO が使用されていることを理解しています。また、IO が参照透過性を可能にしていることも承知しています。
ただし、IO に関する 1 つのことは、まだ少しわかりにくい点です。つまり、呼び出されたときにすべてが一度に実行されるため、IO に含まれるアクション間で悪いことが起こらないことが保証されます (遅延構成にすぎないため)。そのため、この遅延構成が最終的に呼び出されると、他の並行コードはそれを歪めることはできません (この遅延構成)。
それで、それは本当ですか?(このコンテキストでは) IO は、このようなコードよりも優れているでしょうか?
var x = 1; //shared resource
//some other code access and changes x to 2
const y = multiplyBy100(x);
const z = add1000(y);
log(z); // 1200 instead of desired 1100
IO がそのような問題の解決策であることを理解しています。
IO(function () {return x;}).map(multiplyBy100).map(add1000).map(log); //1100 no matter what
私の推論は大丈夫ですか?