記号の数が増えてくると、それらに長い名前を与えて、 同じ名前になることを避けたくなります。 一方で、長い名前は人間にとって扱いにくいので、 短くしたいという要望も、同時に、生じます。 わたしたちが使う日常の言語では、ひとつの記号 (単語) が 文脈に応じて、派生的な意味に変化するようにして、 記号数を減らしていますが、ここでは、長い名前を 短く書ける方法を考えましょう。
このノートが書かれた時点のバージョン 0.44 の甲州計算機には、 短縮記号の読み込み機能だけ実装されてます。
長い記号は、その途中を省略することで、短く書けます。
たとえば、abcdefg
を a.g
と書けば短くなります。
a.
が abcdef
の省略であると考えれば、
a.g
から、もとの記号 abcdefg
を復元できます。
a.
が abcdef
の省略であることを、
short
というキーワードを使って、
つぎのように書けます。
short a abcdef
この短縮記号の定義があると、つぎのような判断
|-- A /text a.g
が、正式名の判断
|-- A /text 'abcdefg
として解釈されます。
記号 a
は名前空間のようにもみえますが、
単なる短縮記号で、つぎのような a.g
と b.fg
は、
同じ記号をあらわします。
short
a abcdef
b abcde
|-- A /text a.g
|-- A /text b.fg
これにより、記号系は単一の空間を共有しつつ、 記号の衝突の大部分を避けられるようになります。
判断出力は |==
によって実行されます。
そのため、個々の |==
に対して、ひとつの短縮設定が対応します。
ある short
からつぎの short
の手前までが、ひとつの短縮区を形成し、
その短縮区のなかの判断出力には、short
の短縮設定が適用されます。
つまり、短縮設定は、レキシカルに決まり、入れ子にはできません。
short
で定義された短縮記号の有効範囲は、
その短縮区の範囲内に限定されます。
しかし、複数の区で、短縮記号を共有するための
仕組みがあってもよいかもしれません。
たとえば、short
に対して -as
オプションをつけるなどが考えられます。
short -as foo/short
区を import
すると同時に短縮記号をつけたいことがあります。
つぎの import
と short
の組み合わせ
import foo/bar
short a foo/bar/
を同時に行うために、-with
オプション
などがあるとよいでしょう。
import -with a foo/bar
区 foo/bar
自体も、
つぎのような -with
オプションつきで定義します。
section -with a foo/bar
a.xxx : <RELMAP>
a.yyy : <RELMAP>
section -with
を使わずに、すべて、正式名を使っても構いません。
たとえば、上の区をつぎのように書いても同じです。
section foo/bar
foo/bar/xxx : <RELMAP>
foo/bar/yyy : <RELMAP>