diff --git a/content/mimiumのモジュールシステム.md b/content/mimiumのモジュールシステム.md index 2c5f56fe..839e88cf 100644 --- a/content/mimiumのモジュールシステム.md +++ b/content/mimiumのモジュールシステム.md @@ -48,7 +48,7 @@ mod modname{//ソースファイルと同じ宣言 ```rust mod modname{//ステージの変更 -@stage = macro +#stage = macro // } ``` @@ -168,8 +168,9 @@ Program = FunctionDefinition |GlobalDeclaration |ModuleDeclaration |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) -これマクロとして実装してあって、それこそレコードとして出力されるだけなので、分割コンパイルとかモジュール内相互参照とかは全然考慮されてないけど意味論はすっきり +これマクロとして実装してあって、それこそレコードとしてファイルが埋め込まれて出力されるだけなので、分割コンパイルとかモジュール内相互参照とかは全然考慮されてないけど意味論はすっきり diff --git a/content/mimiumの多段階計算.md b/content/mimiumの多段階計算.md index c17da80c..e875053a 100644 --- a/content/mimiumの多段階計算.md +++ b/content/mimiumの多段階計算.md @@ -77,51 +77,55 @@ let x = `{1+2} //コード型のシンタックス ${x} //エスケープ/スプライスのシンタックス //or $x +``` + +### 型シグネチャ + +```rust +let x : `(float)->float //これは関数型に対する宣言 ``` ### シンタックスシュガー -ファイル内でステージを変えたブロックを作りたい場合、ブロックがどんどんネストされていって面倒なので +ファイル内でステージを変えたブロックを作りたい場合、ブロックがどんどんネストされていって面倒。 + +あと、mimiumではブロック`${}` の内側に`fn`での関数宣言ができないのもダルい。 ```rust //ステージ1からスタート - -stage(-1){ +#stage(macro) //ここはステージ0 let x = {...} -} -//一度ステージ1へ -stage(-1){ -//ここはステージ0 +#stage(main) +//ここで戻る let y = (x+...) -} + ``` これをこういう形でネストした式へ変形 ```rust -//コンパイラはステージ0からスタートするためにCodeを追加 -`{ +`{//コンパイラはステージ0からスタートするためにCodeを追加 //ステージ1からスタート -${ - //ステージ0 +${//#stage(macro) start +//ここはステージ0 let x = {...} - `{ - //一度ステージ1へ - } - ${ - //再度ステージ0へ + `{//#stage(main) start + //ここで1に戻る  let y = (x+...) - } + }//#stage(main) end -} -} + }//#stage(macro) end +}// main code end ``` この、最後に閉じ括弧が溜まっていく形にしない限り、yはxを参照できなくなってしまう -→ステージは[[mimiumのモジュールシステム|モジュール]]単位で変更していくほうが都合がよさそう。 +最終的に、ステージは[[mimiumのモジュールシステム|モジュール]]単位で変更していくほうが都合がよさそう。 + +とはいえ、簡易的に1ファイル内でステージ0、1の変更もしたいかな +