コンテンツにスキップ

2. 設計原則

P1. 意図とブロックステートを分ける

Section titled “P1. 意図とブロックステートを分ける”

作者は意味を宣言し、ブロックステートはコンパイラが導出します。意味とブロックステートの二層では def・テーマ・複数建築まで届かないので、名前付きメンバを持つ三層 IR にします (アーキテクチャ)。

プログラム全体の last-wins (ペイントモデル) は順序依存の事故を生むので破棄します。コマンドは暗黙の フェーズに振り分けられて固定順に評価され、last-wins は同一フェーズ内のローカルな上書きに限られます (コンパイルモデル)。

P3. 小さく閉じた語彙と、エスケープハッチ

Section titled “P3. 小さく閉じた語彙と、エスケープハッチ”

意味プリミティブの集合は小さく保ちます。語彙が小さいほど LLM の生成は安定し、バリデータも単純に なります。足りない表現力は raw ディレクティブで逃がします。

絶対座標ではなく壁セレクタで位置を指定します。ブロック・ブロックエンティティ・エンティティは同じ セレクタ文法を共有します (構文)。

コンパイラは翻訳器であると同時に建築 linter です。エラー報告の形式と粒度をファーストクラスの関心事 として設計します。精度はワンショット生成ではなくループで獲得するものだからです (Lint)。