diff --git a/content/内部状態をもつ関数とクロージャの組み合わせ.md b/content/内部状態をもつ関数とクロージャの組み合わせ.md index 5a396048..f90c34f8 100644 --- a/content/内部状態をもつ関数とクロージャの組み合わせ.md +++ b/content/内部状態をもつ関数とクロージャの組み合わせ.md @@ -47,7 +47,7 @@ fn dsp(input){ クロージャで内部状態をミュータブルに変更する目的を達成するのであれば、この2つは同じインスタンスに対する呼び出しであるが、信号処理としては別々の内部状態インスタンスを持つと考える方が自然に読める -解決策としては、そもそも変数に対して一切の再代入を認めない実装にしてしまうこと。そうすると、クロージャが生成された時にfilterのような関数を含む上位値はdeep-copyされる実装にできる。まあ、こうすると実装に[[upvalue]]を使う旨みはほとんどなくなるが +解決策としては、そもそも変数に対して一切の再代入を認めない実装にしてしまうこと。そうすると、クロージャが生成された時にfilterのようなクロージャを含む上位値を全てdeep-copyしてしまう実装にできる。(まあ、こうすると実装に[[upvalue]]を使う旨みはほとんどなくなるが) 意味論を変えないまま2つのfilterを区別するならこんな感じにサンクを挟むことになる