甲州記法の ()
という記号は、日本語で 空番 (くうばん) とよばれ、
主として、項目の内容が空であることを意味するために使われます。
英語では、empty または empty filler とよばれます。
甲州記法で使われる内容記号、つまり、項目の内容として使われる記号は、
記号それ自身で、その意味が確定しているわけではありません。
たとえば、1
という記号は、主として、数値の 1 の意味で使われますが、
ほかの使い方をしても構いません。
その具体的な意味は、文脈ごとに定まります。
空番もそれが使われる文脈によって、特定の意味が確定します。
1
を数値の 1 で使うことがもっとも多いように、
()
は、多くの場面で「空である」や「なにもない」を意味するのに使われます。
このノートは、甲州計算機バージョン 0.65 において、 空番が使われる場面を説明します。
判断が source
で指定した項目をもっていないとき、
その項目の内容は ()
として読み込まれます。
逆に判断を書き出すときは、既定では ()
の項目は省略して書き出されます。
ただし -empty
をつけたときは、空項目も書き出されます。
|-- A /x 1 /y 10
|-- A /x 1 /y 20
|-- A /x 2
a : source A /x /y
|== B : a
|== C -empty : a
この計算の結果は、つぎのように出力されます。
|-- B /x 1 /y 10
|-- B /x 1 /y 20
|-- B /x 2
|-- C /x 1 /y 10
|-- C /x 1 /y 20
|-- C /x 2 /y ()
交わり meet
の代わりに、たぶん maybe
を使うと、
交わらない組に ()
をおぎないます。
この計算は、a
の組に対して、
交わり可能な b
の組がないことを意味します。
|-- A /x 1 /y 10
|-- A /x 1 /y 20
|-- A /x 2
|-- B /y 20 /z 50
|-- B /y 20 /z 60
a : source A /x /y
b : source B /y /z
|== C : a | meet b
|== D : a | maybe b
つぎのように出力されます。
|-- C /z 60 /x 1 /y 20
|-- C /z 50 /x 1 /y 20
|-- D /x 1 /y 10
|-- D /z 60 /x 1 /y 20
|-- D /z 50 /x 1 /y 20
|-- D /x 2
項目計算式の結果が未定義であるとき、その結果の表現方法として、
何種類か考えられます。たとえば、数値に空番を足す 10 + ()
のような計算結果は、どのようになるとよいでしょうか。
- 未定義であることをあらわす内容
<< undef ... >>
とする。 - エラーとして処理を中断する。
- 空番
()
とする。
現在の甲州計算機には実装されていませんが、
将来的には、未定義内容を使えるようになると思われます。
つぎのように、関係写像を演算子 undef
で囲むことで、
部分的に動作を変更できるようになるでしょう。
undef -keep ( ... )
undef -abort ( ... )
undef -empty ( ... )