notes mizzy.org

言語機能はグラフへ消える糖衣である限りで許される

規範的主張 出典: explorations/2026-06-10-carina-type-system-type-theory/design-position.md §1-2, explorations/2026-06-10-carina-type-system-type-theory/plan-as-compilation.md §2 作成/ 更新

IaC言語に機能を足してよいかどうかには、はっきりした判定条件がある。言語機能は、静的段階の終わりまでにグラフへ正規化されて消える糖衣である限りで許容される。以後これを蒸発条件と呼ぶ。

静的段階 動的段階 糖衣 let / for / 補間 module / exports 展開・置換 グラフ 型付きノード + エッジ 糖衣は蒸発しきっている apply 蒸発しない糖衣 Output.applyコールバック グラフに正規化されず、デプロイ段階まで生き残る
蒸発条件を満たす機能は静的段階の終わりで消え、あとにはグラフだけが残る。生き残るプログラム片はグラフの外にはみ出た異物になる。

let、for、補間、モジュール、exportsはこの条件を満たす。planの時点ではすべて展開・置換され、残るのは型付きノード(リソース定義)とエッジ(依存)だけである。「あれば便利」の限界がここで定められる — 便利さそれ自体は許可の根拠にならず、蒸発するかどうかだけが根拠になる。

この条件は判定基準として働き、設計空間の各点に評価を下せる。

コンパイラの言葉に翻訳すると、蒸発条件は「すべての言語機能はフロントエンドでlowering可能でなければならない」というIR中心の言語設計原則そのものである。字句解析・脱糖・意味解析までで人間向けの構文が消え、中間表現が知らなくてよい形に落ちる。

#設計原則 #蒸発条件 #dsl