[obsidian] vault backup: 2024-11-16 23:44:13[
All checks were successful
Build / build (push) Successful in 4m2s

This commit is contained in:
Matsuura Tomoya(Windows) 2024-11-16 23:44:13 +09:00
parent 7a5dba3a58
commit 94ce72ba47
3 changed files with 47 additions and 1 deletions

View File

@ -5,7 +5,7 @@ date: "2023-09-20T17:12:17+0900"
[[音楽プログラミング言語の形式化#mimium と 多段階計算]] [[音楽プログラミング言語の形式化#mimium と 多段階計算]]
[[多段階計算]]を取り入れたい [[多段階計算]]を取り入れたい → [[多段階計算を命令型VMインストラクションで表現する]]
とりあえず[[The w-calculus a synchronous framework for the verified modelling of digital signal processing algorithms|W Calculus]]を自然に拡張してみる。 とりあえず[[The w-calculus a synchronous framework for the verified modelling of digital signal processing algorithms|W Calculus]]を自然に拡張してみる。
$W$ Calculusとmimiumの形式は似ているが、主に2つの違いがある。 $W$ Calculusとmimiumの形式は似ているが、主に2つの違いがある。

View File

@ -0,0 +1,44 @@
#mimium #programming-language
related: [[mimium新内部表現の構想]] [[mimiumの中間表現を考える]] [[mimiumのMIRコンパイル過程を真面目に考える]]
[[多段階計算]]を[[mimium]]の中にマクロとして取り入れたい.
既存の多段階計算の文献は基本的に[[操作的意味論]]を定義しているため、そのままナイーブに実装するならツリーウォークインタプリタや[[CEKマシン]]的なものにならざるを得ない。
ただmimiumでは既にVMのフォーマットを定めており、マクロ展開やコンパイル時計算をMIRレベルで展開する全く別の処理系をもう一つ作らなければいけないのかという悩みがある。
一つの方向として、多段階計算の意味論を丸ごとVMの命令列の中に組み込むことはできないだろうかというのを考える。
## 追加命令
`incl_level / decl_level <dst>` のような命令があるとする
VMは最初、マクロ評価時に自分の現在の評価ステージを0として評価スタート
VMは、命令記録モードと実行モードの2種類で、現在の評価ステージが0のときに実行モードになる
mainプログラムの先頭はマクロ展開のため必ずincl_levelからスタート命令記録モードから開始
命令記録モードでは、decl_levelがでてくるまでバッファに実行した命令をコピーし続ける
decl_levelでレベル0になったら...うーん
```ocaml
let n = 100 in
let m = 200 in
~( let addc x y = &(~x + ~y) in addc &n &m )
```
`addc`の型は`&int -> &int`
CodeもEscapeもネストできる構造なんだから命令型に直すとなにかしらのスタック構造を操作するものになるはず
Escapeはあくまで埋め込むだけで評価をするわけじゃないんだよな
`&(~x + ~y)`ここだけ取り出すとどうだろう
```
mov 1 x
mov 2 y
add 1 1 2 //最後は必ずこうなるわけで
```

View File

@ -20,6 +20,8 @@ date: "2023-09-20T01:33:51+0900"
[[mimium新内部表現の構想]]での検討材料 [[mimium新内部表現の構想]]での検討材料
こういうのが計算できなかった(要するにfixpointの中で`self`を使うと必要な`self`のサイズを確定できない) こういうのが計算できなかった(要するにfixpointの中で`self`を使うと必要な`self`のサイズを確定できない)
```rust ```rust