[obsidian] vault backup: 2025-08-05 17:45:45[
All checks were successful
Build / build (push) Successful in 7m40s

This commit is contained in:
2025-08-05 17:45:45 +09:00
parent 5f422bf2ec
commit 77dc3f577a
2 changed files with 70 additions and 3 deletions

View File

@@ -33,25 +33,34 @@ pub type alias Hoge = ()->float //エイリアス宣言
```
#### モジュールの宣言
#### シンタックス:モジュールの宣言
```rust
mod(macro) modname{
mod modname{//ソースファイルと同じ宣言
//toplevel_decls
}
```
```rust
mod(stage-1){//ステージの変更
//
}
```
- モジュール単位でMIRとバイトコードを生成して、あとからリンクできるようにする
- ただし、ステージ0マクロの展開もしないといけないので、ASTも出力して保持していないといけない
モジュールを値としてレコード型に型付けできると話が早いんだけど、それ一級モジュールの機能だよな
#### 意味論
```rust
stage(1)
mod(0) modname{
//toplevel_decls
fn foo(){
fn foo()-> `float {
...
}
}
@@ -138,6 +147,9 @@ Rustの場合はグローバルな宣言が基本的に型推論しなくて済
- とりあえずmodAの型はすべて不明なレコード型として解釈して型付け開始
- Proigram→Exprへの変換の中でuse宣言をextern modA:{...}に変換し、名前空間参照をレコードへのアクセスに変換
両方が推論終わってから再度Unificationしないといけないかこれも再帰を禁止しておけばそれでいいのか
---