Skip to content

Latest commit

 

History

History

short-signs

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

短縮記号

記号の数が増えてくると、それらに長い名前を与えて、 同じ名前になることを避けたくなります。 一方で、長い名前は人間にとって扱いにくいので、 短くしたいという要望も、同時に、生じます。 わたしたちが使う日常の言語では、ひとつの記号 (単語) が 文脈に応じて、派生的な意味に変化するようにして、 記号数を減らしていますが、ここでは、長い名前を 短く書ける方法を考えましょう。

このノートが書かれた時点のバージョン 0.44 の甲州計算機には、 短縮記号の読み込み機能だけ実装されてます。

short キーワード

長い記号は、その途中を省略することで、短く書けます。 たとえば、abcdefga.g と書けば短くなります。 a.abcdef の省略であると考えれば、 a.g から、もとの記号 abcdefg を復元できます。

a.abcdef の省略であることを、 short というキーワードを使って、 つぎのように書けます。

short a abcdef

この短縮記号の定義があると、つぎのような判断

|-- A  /text a.g

が、正式名の判断

|-- A  /text 'abcdefg

として解釈されます。

名前空間との違い

記号 a は名前空間のようにもみえますが、 単なる短縮記号で、つぎのような a.gb.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 すると同時に短縮記号をつけたいことがあります。 つぎの importshort の組み合わせ

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>