ADR-16: 意味は文脈相対である。前提は入れ子スコープで供給し、省略を統治する
判断: 言語の全ての式・節・句は、それが成り立つ前提(カレンダー、ロール規約、粒度、TZ、asof 等)の 上でのみ意味を持つ。この「解釈が立つための先行条件」の総称を premise と呼ぶ(用語は 3.0 を参照)。 premise は、既定 → 評価文脈 → ブロック宣言 → 段の明示引数、という入れ子スコープの いずれかの階層から供給され、最内優先で解決される。未解決の premise は既定へ黙って落とさず静的エラーとする。 ただし premise の種類ごとに、省略時に「言語既定を許すか/宣言必須(未宣言はエラー)か」を分ける。
背景: 「月末の 2 営業日前」が二意だったのは語が足りないからではなく、解釈を確定させる前提 (どのカレンダー、どのロール規約)が言外に置かれていたためである。これは構文全体に一般化できる。 どんな文・節・句も、成立の前提の上でしか意味を持たない。前提が宣言されなければ「普通はこうだよね」 という曖昧な共通理解に落とすほかなく、落ちなければ論理的・物理的・社会的なエラーになる。 そして前提は前提の上に立つ(カレンダーは暦法の上に、暦法は基底の上に立つ)ため、完全展開は無限後退する。 ゆえに、背景まで含めた全意図を有限の一行に収めることは原理的に不可能であり、簡潔さは前提を省略すること からしか生まれない。すなわち簡潔さと自己完結は原理的トレードオフである。目標は「省略ゼロ」ではなく 「省略の統治」——何を省略してよいか、省略されたものがどこから供給されるか、供給されなければどうなるかを 言語が制御することにある。
この原理は、これまでの個別判断の共通の親である。錨解決の明示必須(I3)、Modified の上位窓引数(ADR-14)、 幅の規約集合(ADR-12)は、いずれも「言外の前提を言内に引きずり出す」という同じ要求の個別適用であった。
却下した案:
- 前提を一切省略させない案(全式が自己完結)。前提の無限後退により一行に収まらず、簡潔さを失うため却下。
- 未宣言の前提を常に言語既定へフォールバックする案。カレンダーやロール規約のように、取り違えると サイレントに別の結果を生む前提まで既定に落ち、「黙って違う結果」を量産するため却下(I3 違反)。
- 前提を単一階層(評価文脈のみ、あるいはブロック宣言のみ)でしか供給しない案。区間ごとに前提を 切り替える現実の要件(段ごとに別カレンダー等)を殺すため却下。
帰結:
- 前提の供給はレキシカルスコープと変数解決に同型。最内の宣言から外へ探し、最初に見つかった値を使う。 段の明示引数は文脈を上書きする(最内優先)。
- 未解決の前提は静的エラー(実行時の暗黙フォールバック禁止)。人間の言語は曖昧な共通理解へ落として 済ませるが、本言語はそこだけ意図的に違え、「未解決は明示エラー」とする。
- 前提の種類ごとの省略可否は、「その前提を取り違えたときサイレントな誤結果を生むか」で分ける。 危険な前提(カレンダー、ロール規約。取り違えると別の日付が黙って出る)は宣言必須寄り、 安全な前提(粒度の既定「日」など、明示しても既定でも結果が変わらない文脈が多いもの)は既定可。
- 前提を束ねる宣言構文は、cal 専用ではなく文脈メンバー全般(cal・ロール・粒度・TZ・asof)を対象とする 汎用の枠とする。cal だけを特別扱いする理由は本原理の下では存在しない。枠の冗長さは、 よく使う前提だけ書ける軽量形と全て書ける完全形の二段で畳む(構文詳細は次段)。