日本語 · English(未訳)

ADR-25: 原始的定義をフル構文とし、値式・変数レイヤーを導入する

判断: 暦法の原始的定義(グレゴリオ暦の閏年規則、月の非一様な境界など、派生元を持たない根の定義)を、 言語自身で書けるフル構文とする。ユーザーも書け、Gregorian は透明な標準ライブラリとして同梱する(組み込みの ネイティブ実装ではなく、言語で記述された定義)。この帰結として、時間ストリームでない値式(数値・比較・論理・ 条件)と変数を、premise 層の第一級として今導入する。値型は時間ストリーム型・premise 型と並ぶ別の型であり、 ADR-05 の「型は一本」は本体層内に限定される(ADR-18 の改訂に従う)。原始的定義で拡充する語彙は層で囲い込まず 本体層と共有し(ADR-18・ADR-19)、既存語彙との統廃合を経て、同等物の無いものだけを足す。

背景: 派生的定義(会計暦=Gregorian.monthStart を +3 ずらす。ADR-19)を書くには、原始 Gregorian の 中で monthmonthStart が語として定義・公開されていなければならない。ゆえに派生の書き方は原始的定義の 書き方に従属し、原始を先に決めないと派生は定まらない。そして原始の閏年規則(4 で割れ、100 で割れず、ただし 400 で割れる、という例外の例外)は数値・比較・論理・条件という時間ストリームでない値式を要求し、各要素を 束縛する変数(yeary)も要る。ADR-21 は「将来 3 を変数化したとき数値・文字列・列挙の値型が芋づる式に 要る」と予見していたが、その具体的動機が原始的定義という形で現れた。ユーザーが原始的定義を書けること自体が、 汎用スケジューラの目的(自前暦法。ADR-07)の達成手段である。Gregorian は公知ゆえライブラリとして用意するに 過ぎず、ユーザーはその定義を読んで妥当性を判断してもよく、参考に別の原始的定義を書いてもよい。

却下した案:

帰結: