記号文字の取り扱い方

Schemeでは多くの記号文字が自由に扱えるため、
シンボルの取り扱い方にしばしば迷ってしまいます。

例えば、@&%$!?+-*/^~._ あたりの文字は英数字のように自由に利用できます。
そのため何らかの略記やシンボルの意味づけのために利用することができます。

Nobukoでの利用例

ライブラリを書く用に追加した短縮系syntaxの接頭に @ を付けていました。
名前が他のシステムモジュールと被らせないようにするためです。

しかし、現在は @ は取り除いています。
記号文字の使用には慎重になったほうが良さそうです。

Schemeの記号文字

Schemeでそれ自体に特別な意味がある記号文字は、
() ; " ' ` , ,@ . # に限定されています。
さらに ! ? は接尾語としてライブラリ手続きで
規則性のある利用がされています。

() . は構造化、; はコメント、 " は文字列リテラル
' ` , ,@ は伝統的なquote処理で利用されています。

# は伝統的な sharpsign 構文であり続く文字列で様々なリテラルや、
特別なリード時処理が予約されています。
Common Lispでは reader-macro の一種として実装されており、
Schemeの処理系拡張でも良く利用されています。

こうしてみるとSchemeにおける記号文字の利用は限定的で、
ほとんどはマクロ(構文)として処理されていることが分かります。

シンボルと記号文字

通常のマクロはシンボルなので説明的ですが、
記号文字はそれ自体に意味はなく、暗黙の了解が必要になります。

また、記号文字に意味づけが与える効果は、
説明的なシンボルの短縮系に過ぎないため、
導入する箇所を間違えては効果的にはなりません。

説明的なシンボルを利用することは、一見冗長な記述に見えますが、
暗黙の了解が明確化するまで、記号文字の不使用は必要なフェーズになります。

@$%&_ などの便利文字は、長期的に単一の意味づけが可能になるまで、
使用は控えたほうが良さそうです。

終わりに

Nobuko では積極的に記号文字は使わないようにしたいと考えています。

ほとんどのケースでは説明的な構文シンボルと、
いくつかの便利マクロの組み合わせで記述できるからです。