From e2f051f1a9c38415d7c434e4280a1cf3055105da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=BE=E6=B5=A6=20=E7=9F=A5=E4=B9=9F=20Matsuura=20Tomoy?= =?UTF-8?q?a?= Date: Fri, 26 Jul 2024 13:26:12 +0900 Subject: [PATCH] [obsidian] vault backup: 2024-07-26 13:26:12[ --- content/内部状態をもつ関数とクロージャの組み合わせ.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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を区別するならこんな感じにサンクを挟むことになる