TL/1 の変なところ (副プログラム呼出し)

プログラミング言語 TL/1 について私が持っている資料は月刊アスキー 1980 年 1 月号の特集記事の複製とネットだけだ。 それだけでは微妙に曖昧な箇所がある。 そのひとつが副プログラムの呼出しだ。 副プログラムとは手続きか関数のことであり、その呼出し方法についての記述はそれぞれこうある。

手続き名 (式, 式, …, 式)

手続き副プログラムの呼出し。

引数のある手続きでは、実際の値 (実引数) を「(実引数リスト)」で指定する。

(略)

関数副プログラム名 (式, 式, …, 式)
                   ⌊ 実引数リスト ⌋

(略)

引数のある場合は「(実引数リスト)」によって与える。

どうにも用語が一貫されていないような気がするが、それ以上に「場合は」という表記が微妙だ。 引数がある場合はそれを与えるというような規定があるのだから、素直に解釈すれば無い場合は指定すべきではないという意味にとれる。 しかし、省略しなければエラーになるべきかどうか判断が付かない。

例を出すと、手続き FOO が仮引数 0 個で定義されている場合に

FOO()

と呼出すのはエラーだろうか? 一緒に掲載されているサンプルプログラムでは丸括弧ごと省略していて、ネット上にわずかにある TL/1 で書かれたプログラムでも引数 0 個の手続き呼出しにおいては常に丸括弧ごと省略されている。

また、 TL/1 の実装の MSX 版である TLX ではエラーになるので、これはエラーとすべきようだ。 省略できるのはともかくとして、省略しなければならないというのは一貫性からするといささか奇妙にも思える仕様である。

Document ID: 098163229988de36bd11f02a7f0a366d