From ac6c358150aceefb9435ee04dceea2d418ad4c47 Mon Sep 17 00:00:00 2001 From: "Matsuura Tomoya(Windows)" Date: Sun, 3 Aug 2025 17:51:06 +0900 Subject: [PATCH] [obsidian] vault backup: 2025-08-03 17:51:06[ --- content/mimiumのモジュールシステム.md | 36 ++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/content/mimiumのモジュールシステム.md b/content/mimiumのモジュールシステム.md index fcc7999e..6a9cffe5 100644 --- a/content/mimiumのモジュールシステム.md +++ b/content/mimiumのモジュールシステム.md @@ -22,9 +22,43 @@ type alias Hoge = ()->float //エイリアス宣言 ```rust mod(macro) modname{ - + //toplevel_decls } ``` +- モジュール単位でMIRとバイトコードを生成して、あとからリンクできるようにする +- ただし、ステージ0マクロの展開もしないといけないので、ASTも出力して保持していないといけない + +#### 意味論 + +```rust +stage(1) +mod(0) modname{ + //toplevel_decls + fn foo(){ + ... + } +} +modname::foo!() +``` +これがあったとすると、 + +```rust +let modname = ${ + foo = | | { }, + ... +} + +modname.foo!() + +``` + +こういう感じかなー、あ、でもこうするとモジュール内での相互参照が解決できないか + + +--- + + + ``` Program = FunctionDefinition