日本語 · English(未訳)

ADR-04: 全ての式を「日付ストリーム → 日付ストリーム」に統一する(閉包性)

判断: 言語の全演算子を、日付ストリームを入力に取り日付ストリームを返す形に揃える。 ある式の出力が別の式の入力になれること(閉包・参照透過性)を言語の中核に据える。

背景: 「導き出された日を基準に、さらに別の定義を作る」(月末→その N 日前→その翌週の某曜日) という要求は、出力を再入力できる性質そのものである。cron も RRULE もこの閉包性を持たない。 RRULE は「月末の集合」を生成できるが「その各要素を 3 営業日ずらす」とは言えない。式が一枚岩で、 出力を再入力できない。この穴こそが、営業日対応以前の、本言語の独自性の本体である。 SQL の演算子が全て「テーブル→テーブル」であるがゆえに無限にネストできるのと同じ発想を採る。

却下した案: パターンごとに専用の一枚岩構文を用意する案(cron/RRULE 系)。合成不能で却下。

帰結: ADR-01 のカスケードは、別サブシステムではなくこのストリーム代数の内側で実現できる (カレンダー=優先度付き上書き結合子で合成した名前付きストリーム式。ADR-15 関連の議論も参照)。

用語注記: 本 ADR で言う「日付ストリーム」は、後の ADR-18 で 時間ストリーム(TemporalStream)へ 改名された。ADR-10 で基底を時間軸へ降格した結果、日は特権を持たない一粒度となったため。以降の記述は 時間ストリームを正式名称とする。