[obsidian] vault backup: 2025-10-16 18:28:16[
This commit is contained in:
@@ -77,12 +77,15 @@ v4
|
|||||||
- まず型のユニフィケーションをunion_findに置き換える
|
- まず型のユニフィケーションをunion_findに置き換える
|
||||||
- 型システムがしっかりするほど逆にエラー報告がわかりにくくなってる矛盾があるので、unionする際にエラーの原因をちゃんとtrackできるような仕組みを何か入れたい
|
- 型システムがしっかりするほど逆にエラー報告がわかりにくくなってる矛盾があるので、unionする際にエラーの原因をちゃんとtrackできるような仕組みを何か入れたい
|
||||||
- [[mimiumでのバリアント]]:やっぱり必要
|
- [[mimiumでのバリアント]]:やっぱり必要
|
||||||
- モジュールシステム:名前空間のCライブラリレベルでのマングリングとか考える必要ありそう
|
- [[mimiumのモジュールシステム|モジュール]]:名前空間のCライブラリレベルでのマングリングとか考える必要ありそう
|
||||||
- [[OSC]]の実装
|
- [[OSC]]の実装
|
||||||
- アドレスを単一のnumberにマッピングするだけならそんなに困らなさそう。
|
- アドレスを単一のnumberにマッピングするだけならそんなに困らなさそう。
|
||||||
- [[mimiumでMIDIインプットを実装|MIDIドライバの書き直し]]
|
- [[mimiumでMIDIインプットを実装|MIDIドライバの書き直し]]
|
||||||
- イベントストリームのチェーン
|
- イベントストリームのチェーンをちゃんとFRPで書けるようにしたい
|
||||||
- オーディオドライバのコンフィグ系をフロントエンドに実装
|
- オーディオドライバのコンフィグ系をフロントエンドに実装
|
||||||
|
- Delayに加えて、rwtableプリミティブを追加
|
||||||
|
- これがないとリバースディレイを作れない
|
||||||
|
- というか、これがあるとDelayもrwtableでカバーできてしまうという
|
||||||
- シンタックスツリーをRed-GreenツリーにしてLanguage Serverを強化
|
- シンタックスツリーをRed-GreenツリーにしてLanguage Serverを強化
|
||||||
- ステージ0の組み込み関数に配列と文字列操作を追加
|
- ステージ0の組み込み関数に配列と文字列操作を追加
|
||||||
- mapやfoldをやるにはジェネリクスが必要だけど、とりあえずは整数に対する操作だけでも
|
- mapやfoldをやるにはジェネリクスが必要だけど、とりあえずは整数に対する操作だけでも
|
||||||
|
|||||||
@@ -146,13 +146,7 @@ fn dsp(){
|
|||||||
|
|
||||||
[[Computation Expression]]使ってIOの値を`let!`でバインドしていく、とかの方がわかりやすいかも?
|
[[Computation Expression]]使ってIOの値を`let!`でバインドしていく、とかの方がわかりやすいかも?
|
||||||
|
|
||||||
## MIDIディレイとかどうすんの
|
MIDI入力がトリガーになってクロージャのupvalueを書き換えることでCellの中身を書き換えるとなると、現実的にはオーディオスレッドとMIDI(イベント)スレッドを跨いでupvalueを操作することになる。`get_closure_mut`でクロージャをゲットして実行することはできるけど、その時には結局VMがオーディオスレッドにいるから、VMがクロージャ実行予約の命令を受け取るmpscチャネルを持っておいて、予約されたらオーディオブロックの頭で実行する、みたいな感じにする??
|
||||||
|
|
||||||
```rust
|
Arcでupvalueを全部包んで、closed upvalueの中身をAtomicU64にする、みたいな方法もあるにはあるが、そうするとClosureのストレージはVMそのものというよりもVMインスタンス間で共有される感じになるのかな
|
||||||
fn delay<T>(stream:Stream<T>,time:float){
|
|
||||||
stream@(now+float)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ Rustの場合はグローバルな宣言が基本的に型推論しなくて済
|
|||||||
- use modAの解釈開始
|
- use modAの解釈開始
|
||||||
- マップに問い合わせ、ファイルがあったのでそれを参照
|
- マップに問い合わせ、ファイルがあったのでそれを参照
|
||||||
- とりあえずmodAの型はすべて不明なレコード型として解釈して型付け開始
|
- とりあえずmodAの型はすべて不明なレコード型として解釈して型付け開始
|
||||||
- Proigram→Exprへの変換の中でuse宣言をextern modA:{...}に変換し、名前空間参照をレコードへのアクセスに変換
|
- Program→Exprへの変換の中でuse宣言をextern modA:{...}に変換し、名前空間参照をレコードへのアクセスに変換
|
||||||
|
|
||||||
両方が推論終わってから再度Unificationしないといけないか?これも再帰を禁止しておけばそれでいいのか
|
両方が推論終わってから再度Unificationしないといけないか?これも再帰を禁止しておけばそれでいいのか
|
||||||
|
|
||||||
@@ -186,5 +186,7 @@ Pythonのモジュールシステム [Python's Import System - Module object|R
|
|||||||
|
|
||||||
一応このやり方でも、ファイルに対する型情報さえ残ってればキャッシュと分割コンパイル自体は可能?
|
一応このやり方でも、ファイルに対する型情報さえ残ってればキャッシュと分割コンパイル自体は可能?
|
||||||
|
|
||||||
|
問題点:レコードとして埋め込むと、エクスポートできる関数はステージ0かステージ1のいずれかになる(モジュール内でステージの混在自体はできるけど)
|
||||||
|
なんかこれだとダメだというもっとはっきりした理由をこの前気がついた気がするんだが、思い出せねえ、、
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user