ADR-22: 記号は三役に一対一で対応させる
判断: 三つの記号を三つの役割に一対一で割り当てる。
|>— 段の連結(本体層のパイプ。時間ストリームを次段へ流す)。.— premise 修飾(名前空間の階層参照。Gregorian.monthEnd等。ADR-17)。|— 結合子(ストリームの和)のために温存し、段連結には使わない。
背景: 段連結の記号として、パイプ |>(F#/Elixir 系)・パイプ |(シェル/PowerShell)・ドット .
(メソッドチェーン)の三案を比較した。ドットで段を継ぐのは違和感が強く却下(premise 修飾に使うのが自然で、
そちらは異論なし)。| 一本は PowerShell 経験者には馴染むが、多くの言語で集合和・論理和に使われる記号であり、
本言語は結合子でストリームの和・積・差を扱う(ADR-06 の横合成、premise 層の祝日増減も和差)。和に自然な | を
段連結で消費するのはもったいない。ゆえに | は結合子(和)に温存し、段連結は |> とする。
三記号が三役に一対一で対応することで、記号の意味が曖昧にならず、ADR-16「意味は明示的に」と調和する。
却下した案:
- 段連結を
.(ドット)にする案。密度は最も高いが、premise 修飾(ADR-17)に使う.と衝突し、かつ 「独立した段が流れる」という閉包の思想が「オブジェクトのメソッド呼び出し」に見えて後退するため却下。 - 段連結を
|にする案。結合子(和)に使う記号を奪うため却下。
帰結: 本体式の基本形は 生成子 |> 点変換 |> 選択子 |> …。premise 内の階層参照は 名前空間.名前。
ストリーム和は A | B(構文詳細は 30-syntax で確定)。