問題
holidays = external(kind: dates) の解決子が実行時に失敗した。言語仕様上の扱いとして
正しいものを一つ選べ。
- (a) 空テーブル
[] covering: …に自動的に読み替えて続行する - (b) 供給エラー(SupplyError 系)——「まだ無い」(空テーブル)とは型で区別され、 空への読み替えはしない
- (c) 前回の解決値がキャッシュされていれば黙ってそれを使う
- (d) covering を外して全期間未知として続行する
正答
(b)
解説
ADR-45/46 の核心的な型区別: 「正当な空」=空テーブル+covering(値であり評価は続く・ 残走路が運用信号)と、「解決失敗」=供給エラー(値が得られていない・エラーとして顕在化)。 失敗を空に読み替えると「祝日がない」という偽の主張に化けるため、言語は絶対にしない ((a)(d) が危険な理由)。キャッシュ・劣化運転などの回復戦略は発報層の責務であって言語の 意味論ではない((c)——spec §7.8 の分業)。