[obsidian] vault backup: 2025-09-25 13:38:52[
All checks were successful
Build / build (push) Successful in 10m47s
All checks were successful
Build / build (push) Successful in 10m47s
This commit is contained in:
@@ -5,7 +5,7 @@ date: 2024-10-20 12:02
|
|||||||
|
|
||||||
ツリー形式からBasicBlockのインストラクション形式に変える
|
ツリー形式からBasicBlockのインストラクション形式に変える
|
||||||
|
|
||||||
Stateのこととupvalueを両方処理しなくてはならない
|
Stateのこととupvalueを両方処理しなくてはならない。ワンパスで処理できるのか?
|
||||||
|
|
||||||
StateSize計算とUpvalue計算の両方をtraitとして切り出す方がいいのかな
|
StateSize計算とUpvalue計算の両方をtraitとして切り出す方がいいのかな
|
||||||
|
|
||||||
@@ -48,11 +48,32 @@ $$
|
|||||||
|
|
||||||
## コンパイル
|
## コンパイル
|
||||||
|
|
||||||
```ocaml
|
```rust
|
||||||
let compiler = fun e -> match e with
|
fn eval(e:ExprNodeId,env:Env<Value>)->(Value,Type){
|
||||||
Id(x) ->
|
match e.to_expr() {
|
||||||
| App(e1,e2)->
|
Expr::Id(name)=>{
|
||||||
| Feed(x,e) ->
|
env.lookup(name)
|
||||||
|
|
||||||
|
},
|
||||||
|
Expr::Let(name,e,body)=>{
|
||||||
|
let env = env.extend((name,eval(e,env).0));
|
||||||
|
eval(e,env)
|
||||||
|
},
|
||||||
|
Expr::App(e,args)=>{
|
||||||
|
let (f,ft) = eval(e,env);
|
||||||
|
let argvs = args.iter().map(|e| eval(e,env));
|
||||||
|
match f{
|
||||||
|
Value::Closure(fproto,names,body,env)=>{
|
||||||
|
let kvs = names.iter().zip(argvs.zip()).collect()
|
||||||
|
let env = env.extend(kvs);
|
||||||
|
eval(body,env)
|
||||||
|
}
|
||||||
|
_=>panic!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
@@ -32,7 +32,7 @@ Max(MSP)やPureDataにおける信号処理のように、信号処理のイ
|
|||||||
|
|
||||||
これはソースコードの増分比較に基づいている。同じ差分でも、複数の変更のパターンがあり得るので、単なるテキスト比較ではなくEmacsの拡張として操作の履歴を取得している。
|
これはソースコードの増分比較に基づいている。同じ差分でも、複数の変更のパターンがあり得るので、単なるテキスト比較ではなくEmacsの拡張として操作の履歴を取得している。
|
||||||
|
|
||||||
プリミティブを小さくする&&ソースコードの変更→評価の間隔が短くても済むような仕組みを作れべ
|
プリミティブを小さくする&&ソースコードの変更→評価の間隔が短くても済むような仕組みを作れば良い。
|
||||||
|
|
||||||
## lambda-mmmの記法
|
## lambda-mmmの記法
|
||||||
|
|
||||||
@@ -78,9 +78,9 @@ Max(MSP)やPureDataにおける信号処理のように、信号処理のイ
|
|||||||
## 将来的な展望
|
## 将来的な展望
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
原理的にはFaustでも実現できるはず。
|
原理的にはFaustでも実現できるはず。
|
||||||
|
|
||||||
|
ディレイ、Feed以外に、外部定義の関数呼び出しにもこの仕組みを応用できるか?LuaのUserData的な仕組み。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user