標準
Loment 言語標準
この言語には名前を持ち、引用できる標準がある —— LLS、すなわち Loment Language Standard(Loment 言語標準)—— そしてそれは、このページではなく、 それが記述するコードの隣、リポジトリにある。
何のためのもので、何になることを拒むか
標準が存在するのは、「この実装は正しいか?」への答えが、誰に尋ねたかによって変わらなく なるようにするためである。ほとんどの標準は、規則そのものを述べることでそれに答える。 これはそうしない —— このプロジェクトの規則は、何であれ権威ある写しはただ一か所にのみ 存在するというもので、だからこの標準は言語の規則をみずから一切述べない。 それは規則を囲む枠であり、その中身はすべて、唯一の出所へのポインタか、適合とは何かを 述べたもののどちらかである。
その枠で、この標準は二つのことをする。ひとつは表層を固定すること —— 言語のどの部分が、定められた手続きによってのみ変わりうるのか、そしてその手続きとは 何か。もうひとつは適合を決めること —— それを決める判定スイートを 名指しすることによって。
適合を決めるのは何か
文書ではない。どの実装でもない。標準はそう明言している: 散文と実装と判定基準が食い違う とき、正しいのは判定基準である。失敗している判定基準は、その基準を 緩めることでは通せない —— 実装を変えるか、定められた手続きの下で表層を変えるか、 そのどちらかによってのみ通せる。
そして、判定スイートに見えないもの。なかには、あるマシンには無い かもしれないツールを必要とする判定基準があり、そうした基準は合格ではなくスキップ と報告される —— だから「緑」とは、走った判定基準が緑だったという意味である。標準は そのひとつひとつを名指しし、この文書全体で最も居心地の悪い一文も書き留めている: 判定スイートは実装と同じ著者によって書かれているので、二つの実装が一致することは、 それらが一致していることの証拠である。
スイッチ
標準は Loment を、それが欠いているものではなく、そのスイッチによって記述する。言語が 持ちうるあらゆるサブシステム —— プログラムが使ってよい層、メモリを誰が回収するか、 バイナリが runtime を積むかどうか、外界への口を持つかどうか、そしてどの実行モデルに 向けたものか —— は、プログラムが自分の根のユニットに一度だけ述べ、ビルドがそれを 記録する設定である。既定は、既存のプログラムを従来どおりに振る舞わせ続ける位置である。 それは既定の性質であって、言語についての主張ではない。
標準はまた、見落としやすい一線を引く。スイッチの組み合わせのなかには、二つの値が 正反対のことを意味するために拒否されるものがあり、まだ誰も作っていないという 理由だけで拒否されるものもある。切れているスイッチは、禁じられたスイッチでは ない —— 標準はその二つを意図的に区別している。
どこにあるか
それが記述するコードの隣に、そしてそれと同じように版付けられている: 標準のバージョン が、それが定義する表層のバージョンである。二つではなくひとつの番号 —— 別のエディション軸を立てれば、エディションを言語のバージョンに対応付ける表が必要になり、 その表が第二の真実の出所となってしまうからである。