cyclejs
コンポーネントを参照する (かなり哲学的な) 質問があります。isolate() は参照透過性ですか? .
その後に再現された単純化されたコードを見ると、「不純物」の原因を識別することができませんでした。それは単純化されていないコードがそれを導入しているためですか、それとも関数が 2 つの異なる参照を持つ 2 つの異なるオブジェクトを返すためですか?
その場合、これらの 2 つのオブジェクトは同じ動作をしません (つまり、同じターゲットで同じイベントをリッスンして反応し、異なる vTree$ を生成しますが、まったく同じシーケンスをカプセル化しますか?)。もしそうなら、これらの 2 つのオブジェクトは本質的に同じではないでしょうか? つまり、プログラムのどこかで一方を他方に置き換えても何も変わらないはずです。isolate
参照透過性とはどのような意味ですか? どこで私は間違えましたか?
実際、両方の呼び出しが代入できない異なるオブジェクトを返す場合、それらのオブジェクトはどのように異なるのでしょうか?
function isolate(Component, scope) {
return function IsolatedComponent(sources) {
const {isolateSource, isolateSink} = sources.DOM;
const isolatedDOMSource = isolateSource(sources.DOM, scope);
const sinks = Component({DOM: isolatedDOMSource});
const isolatedDOMSink = isolateSink(sinks.DOM, scope);
return {
DOM: isolatedDOMSink
};
};
}