external — 外部供給宣言(実行時に解決されるテーブルリテラル)
分類: premise 束縛の宣言 / 形: 名 = external(kind: dates | instants [, labels: [値域]] [, source: "…"]) / 確定(ADR-46)
意味
式は静的・データは実行時解決に分離する差し込み口(socket)。テーブルリテラルが 字面で運ぶ静的性質を、字面が無い代わりに宣言で先取りする——解決値(点列・covering・asof・ labels)には、リテラルと同一の統治検査(覆域の包含・昇順・同長)が契約として課される。 新しい型・新しい代数は無い: 解決値はテーブル値そのもので、範囲外註釈・被覆サマリ・残走路 (spec §4.10)もそのまま乗る。
kind:— 整列の主張(必須)。dates=日付列(premisetz:の市民日グリッド整列)/instants=時刻付き(整列なし)。整列は宣言から静的に決まり、解決値の行数・中身に依存しない (空でも宣言どおり——0 行→1 行で整列検査の結果が変わらない)。labels:— ラベル値域の列挙(任意)。宣言=静的知識なので、裸名のラベル比較 (filter(s => sekki(s) == 立春))が書ける。解決値のラベルは値域内・時点列と同長。無宣言なら ラベル無し(届いたら契約違反——黙って捨てない)。source:— 出所(必須。premise メンバーのsource:か、束縛ごとの named-arg 上書き)。- covering と asof は解決値が必ず運ぶ(どちらも欠落=契約違反)。「まだ何も無い」は
dates: []+covering(空テーブル相当)=正当な値、解決の失敗=供給エラー(機械可読な 部分類——実装系は boot 検査から除外して劣化運転に落とせる)。両者が型で区別される。 - 解決は評価文脈の随伴(tz・wkst・asof と同じ「評価への入力」)——評価内の初回参照時に 一回だけ解決され、以後そのスナップショットに固定(未参照なら解決されない)。取得の手段 (DB・ファイル・HTTP)は言語の外(ADR-15)。
例
祝日テーブルを外部供給で受ける(# resolve: 行は doctest の解決子固定材——実運用では
実装系が解決子を差す):
# eval: 2026-01-01..2026-03-01
# resolve: holidays = dates 2026-01-01 2026-01-12 covering: 2026-01-01..2026-01-31 asof: 2026-01-15
premise HRDB { calendar-system: Gregorian; tz: "Asia/Tokyo"; wkst: Mon; source: "hr-db/holidays"
holidays = external(kind: dates)
}
@HRDB
holidays
#=> 2026-01-01 2026-01-12
#~> 範囲外 2026-02-01..2026-03-01(HRDB.holidays covering 2026-01-01..2026-01-31, asof 2026-01-15)
覆域の外(2 月以降)が範囲外註釈になり、被覆サマリには源・covering・asof・残走路が立つ—— データ更新のリードタイム確保(発報層の運用信号)はリテラルと同じ器で観測される。
落とし穴
- premise 束縛の右辺(先頭)限定——本体層・前文下の top-level 束縛・ラムダ内・引数位置は
静的エラー(source:/tz: の統治が premise に要る)。合成は
external(…) |> snapTo(day)の形で。 - external を持つ premise は
tz:宣言必須——covering の端とkind: datesの錨は定義側 tz で 解決される(ADR-37 判断 1 の延長)。 - 解決値の日付は実在検査される(
2026-02-30は契約違反)——リテラルの字句検査(ADR-43)の 解決値向け再執行。黙ったロールオーバーはここでも起きない。 - premise の静的
asof:(版ピン)と解決値の asof が食い違うと被覆サマリに常時表示—— 黙って上書きしない。再現・監査のためのスナップショット保存は実装系の責務(生成方式では 生成ソース自体が証跡だった——担い手が移る)。 - 供給側に残る責務: 点列の昇順化・covering の真実性(「本当にその範囲を網羅取得したか」は 検査できない)・asof の正しさ。言語が課すのは検査(欠落・違反をうるさくする面)まで。
- wire 形式は kind ごと——
datesは日付の字面("YYYY-MM-DD"・言語側が錨打ちするので派生のtz:上書きで再錨できる)・instantsは epoch ms(壁時計字面は DST の重複で二意になり得るため)。
関連
table-literal(字面で書く同じ器・空テーブル)・出所統治(spec §3.8)・
整列(spec §4.5)・ADR-45/46。