[obsidian] vault backup: 2025-09-24 17:14:37[
All checks were successful
Build / build (push) Successful in 10m20s
All checks were successful
Build / build (push) Successful in 10m20s
This commit is contained in:
@@ -48,7 +48,7 @@ mod modname{//ソースファイルと同じ宣言
|
|||||||
|
|
||||||
```rust
|
```rust
|
||||||
mod modname{//ステージの変更
|
mod modname{//ステージの変更
|
||||||
@stage = macro
|
#stage = macro
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -168,8 +168,9 @@ Program = FunctionDefinition
|
|||||||
|GlobalDeclaration
|
|GlobalDeclaration
|
||||||
|ModuleDeclaration
|
|ModuleDeclaration
|
||||||
|use ModuleName
|
|use ModuleName
|
||||||
ModuleDeclaration = Visibility(stage) { Program }
|
ModuleDeclaration = Visibility? mod (StageDeclaration)? Identifier { Program }
|
||||||
|
|
||||||
|
Visivility : pub
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -181,6 +182,6 @@ Pythonのモジュールシステム [Python's Import System - Module object|R
|
|||||||
|
|
||||||
[[Gluon]]のモジュール [Modules - Gluon Documentation](https://gluon-lang.org/doc/crates_io/book/modules.html)
|
[[Gluon]]のモジュール [Modules - Gluon Documentation](https://gluon-lang.org/doc/crates_io/book/modules.html)
|
||||||
|
|
||||||
これマクロとして実装してあって、それこそレコードとして出力されるだけなので、分割コンパイルとかモジュール内相互参照とかは全然考慮されてないけど意味論はすっきり
|
これマクロとして実装してあって、それこそレコードとしてファイルが埋め込まれて出力されるだけなので、分割コンパイルとかモジュール内相互参照とかは全然考慮されてないけど意味論はすっきり
|
||||||
|
|
||||||
|
|
||||||
|
@@ -77,51 +77,55 @@ let x = `{1+2} //コード型のシンタックス
|
|||||||
${x} //エスケープ/スプライスのシンタックス
|
${x} //エスケープ/スプライスのシンタックス
|
||||||
//or
|
//or
|
||||||
$x
|
$x
|
||||||
|
```
|
||||||
|
|
||||||
|
### 型シグネチャ
|
||||||
|
|
||||||
|
```rust
|
||||||
|
let x : `(float)->float //これは関数型に対する宣言
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### シンタックスシュガー
|
### シンタックスシュガー
|
||||||
|
|
||||||
ファイル内でステージを変えたブロックを作りたい場合、ブロックがどんどんネストされていって面倒なので
|
ファイル内でステージを変えたブロックを作りたい場合、ブロックがどんどんネストされていって面倒。
|
||||||
|
|
||||||
|
あと、mimiumではブロック`${}` の内側に`fn`での関数宣言ができないのもダルい。
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
//ステージ1からスタート
|
//ステージ1からスタート
|
||||||
|
#stage(macro)
|
||||||
stage(-1){
|
|
||||||
//ここはステージ0
|
//ここはステージ0
|
||||||
let x = {...}
|
let x = {...}
|
||||||
}
|
|
||||||
//一度ステージ1へ
|
|
||||||
|
|
||||||
stage(-1){
|
#stage(main)
|
||||||
//ここはステージ0
|
//ここで戻る
|
||||||
let y = (x+...)
|
let y = (x+...)
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
これをこういう形でネストした式へ変形
|
これをこういう形でネストした式へ変形
|
||||||
```rust
|
```rust
|
||||||
//コンパイラはステージ0からスタートするためにCodeを追加
|
`{//コンパイラはステージ0からスタートするためにCodeを追加
|
||||||
`{
|
|
||||||
//ステージ1からスタート
|
//ステージ1からスタート
|
||||||
${
|
${//#stage(macro) start
|
||||||
//ステージ0
|
//ここはステージ0
|
||||||
let x = {...}
|
let x = {...}
|
||||||
`{
|
`{//#stage(main) start
|
||||||
//一度ステージ1へ
|
//ここで1に戻る
|
||||||
}
|
|
||||||
${
|
|
||||||
//再度ステージ0へ
|
|
||||||
let y = (x+...)
|
let y = (x+...)
|
||||||
}
|
}//#stage(main) end
|
||||||
|
|
||||||
}
|
}//#stage(macro) end
|
||||||
}
|
}// main code end
|
||||||
```
|
```
|
||||||
|
|
||||||
この、最後に閉じ括弧が溜まっていく形にしない限り、yはxを参照できなくなってしまう
|
この、最後に閉じ括弧が溜まっていく形にしない限り、yはxを参照できなくなってしまう
|
||||||
|
|
||||||
→ステージは[[mimiumのモジュールシステム|モジュール]]単位で変更していくほうが都合がよさそう。
|
最終的に、ステージは[[mimiumのモジュールシステム|モジュール]]単位で変更していくほうが都合がよさそう。
|
||||||
|
|
||||||
|
とはいえ、簡易的に1ファイル内でステージ0、1の変更もしたいかな
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user