From c7c221bc80cfc2dc9d5f56e30e3bbedd9687d1f3 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: Mon, 22 Sep 2025 13:40:38 +0900 Subject: [PATCH] [obsidian] vault backup: 2025-09-22 13:40:38[ --- .../mimiumでのライブコーディングエンジン.md | 30 ++++++++++++++----- content/private | 2 +- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/content/mimiumでのライブコーディングエンジン.md b/content/mimiumでのライブコーディングエンジン.md index 63d315b3..2d1c7dd9 100644 --- a/content/mimiumでのライブコーディングエンジン.md +++ b/content/mimiumでのライブコーディングエンジン.md @@ -65,19 +65,33 @@ delay(3)delay(1) delay(2) に更新される ```rust -enum StateLeaf{ - Nested(Box), - Delay(usize), - Feedback(usize), +//PartialEqで中身ではなくサイズを比較するようにする +struct MemoryChunk(Vec>); + +enum StateNode{ + Tree(StateTree), + Delay(MemoryChunk), + FeedBack(MemoryChunk), + External(MemoryChunk) } struct StateTree{ - children: Vec + children: Slotmap> } ``` +途中でchildrenの一部が削除される可能性があって、かつiterateも行うのでSlotmapで良さそう +Delay、feedback、Externalを区別する意味はあるのか?→たまたまサイズが同じなDelayとExternalとかはあり得るので区別必要 -クロージャの呼び出しの時は? -コンパイル時ではなく、Closure命令でクロージャが作られる際にアロケートとIDの振り分けが起きる +クロージャの呼び出しの時は?→コンパイル時ではなく、Closure命令でクロージャが作られる際にアロケートとIDの振り分けが起きる これは諦めて良さそう(適切にやりたければ[[多段階計算]]でコンパイル時に頑張れ) + +あとはIDの振り方問題。dspから順番にnon-closure-callをトレースするのは同じとして + +```rust +fn update_state_tree(oldtree:StateTree,newtree)->StateTree{ + let state_changed = oldtree.children.iter().zip(newtree.children.iter()).all(|oldc,newc|newc == oldc) + +} + +``` -クロージャ diff --git a/content/private b/content/private index 16aae05f..76de0962 160000 --- a/content/private +++ b/content/private @@ -1 +1 @@ -Subproject commit 16aae05f0057b05ce065a2ddf53591b1b3dbdc91 +Subproject commit 76de0962f9fdd7272f5c6592b13f86277079df9e