ADR-24: 窓を式中で書く記法を設ける。選択子の「第 N」は窓の起点に依存する
判断: 窓(ADR-06/08 で第一級と決めたもの)を本体式の中に書くための演算子を設ける(仮称 within(...))。
また、選択子(nth・last 等)の「第 N」「最後」は、包含窓の起点定義に相対的であり、窓が premise(WKST 等)に
相対的である以上、選択子は窓を経由して premise にも相対的である(二段依存)。
背景: 窓を第一級と決めた(ADR-06/08)が、それを式中でどう書くかは未設計だった。代表例を core に展開する
過程で、窓を明示する演算子が必要と判明した(within(month)・within(week))。生成子 everyDay と選択子 last
も同時に要ると分かった。
「週が土曜始まりの組織が存在する」という実例が、選択子の二段依存を炙り出した。nextWeekday(Fri) の「その週の
金曜」は WKST(週の開始)次第で「今週か翌週か」が反転する(土曜始まりでは金曜が週の最終日になる)。これは
「月末の 2 営業日前」が二意だった問題の週版。WKST は月曜/日曜の二択ではなく、土曜始まりも実在するため、
既定に頼らず premise として扱う必要がある。
より一般に、選択子 nth(2)(第 2 日)が「どの曜日を第 1 とするか」は窓の起点(WKST)で変わる。選択子は窓相対
(I4)と決めたが、窓自身が WKST 相対なので、選択子は窓を経由して WKST にも相対的になる。この二段依存を明記
しないと、土曜始まりで第 2 営業日を数えたとき事故る。
却下した案: WKST を月曜固定または日曜固定とする案。土曜始まり等の実在例を表現できず却下。WKST は premise。
帰結:
- 窓記法(
within等)・生成子everyDay・選択子lastを core 族に加える(正式な構文は 30-syntax で確定)。 - 選択子の「第 N」は窓の起点に依存する二段依存(選択子 → 窓 → WKST)。非局所ではない(窓が premise を明示 すれば選択子は継承する)が、設計として明記する。
nextWeekday等の「その週の」を含む糖衣は WKST 相対(展開先のwithin(week)が WKST を背負う。ADR-23)。- WKST は明示か既定かの統治対象(ADR-16)。ただし WKST 取り違えはサイレントな誤結果を生むため、宣言必須寄り。
改訂(2026-07-07・ADR-26/27 に伴う): 本文が予見した「その週の金曜は WKST 次第で今週か翌週かが反転する」
危険は、nextWeekday の展開先を within(week) から前方 roll(roll(Following, on: 金曜ラベル日の列))に
改めることで解消した(40-examples F31・spec §4.8)。nextWeekday は WKST 非依存になり、「第 N 週の金曜」の
ような窓序数依存の式だけが WKST を要する。選択子の二段依存(選択子 → 窓 → WKST)という本 ADR の本則は不変。