Compare commits
2 Commits
c52875ef03
...
6d721cd9b6
| Author | SHA1 | Date | |
|---|---|---|---|
| 6d721cd9b6 | |||
| c7c221bc80 |
@@ -65,19 +65,36 @@ delay(3)delay(1) delay(2)
|
|||||||
に更新される
|
に更新される
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
enum StateLeaf{
|
//PartialEqで中身ではなくサイズを比較するようにする
|
||||||
Nested(Box<StateTree>),
|
struct MemoryChunk(Vec<u64>>);
|
||||||
Delay(usize),
|
|
||||||
Feedback(usize),
|
enum StateNode{
|
||||||
|
FnCall(Symbol,StateTree),
|
||||||
|
Delay(MemoryChunk),
|
||||||
|
FeedBack(MemoryChunk),
|
||||||
}
|
}
|
||||||
struct StateTree{
|
struct StateTree{
|
||||||
children: Vec<StateLeaf>
|
children: SlotMap<Box<StateNode>>
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
途中でchildrenの一部が削除される可能性がある(1,2,3,4の中から2だけが削除されるケースとか)
|
||||||
|
|
||||||
クロージャの呼び出しの時は?
|
このchildren同士の構造比較はどうするべきか?Delay、Feedbackは
|
||||||
|
|
||||||
コンパイル時ではなく、Closure命令でクロージャが作られる際にアロケートとIDの振り分けが起きる
|
かつiterateも行うのでSlotmapで良さそう
|
||||||
|
Delay、feedback、Externalを区別する意味はあるのか?→たまたまサイズが同じなDelayとExternalとかはあり得るので区別必要
|
||||||
|
|
||||||
|
|
||||||
|
クロージャの呼び出しの時は?→コンパイル時ではなく、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)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
クロージャ
|
|
||||||
|
|||||||
Submodule content/private updated: 16aae05f00...76de0962f9
Reference in New Issue
Block a user