For Gauche 0.9.5


Next: , Previous: , Up: 主要な概念   [Contents][Index]

2.4 大文字小文字の区別

Lisp系の言語は歴史的にシンボルの大文字小文字を区別していません。 しかしSchemeはR6RSからその伝統より離脱し、シンボルを読む際に大文字小文字を区別 するようになりました。(但し、R5RSの範囲内でも処理系内部では 大文字小文字を区別することになってます。 ここで問題としているのは読み込み時の動作です。)

Gaucheの入出力ルーチンも、デフォルトではシンボルの大文字小文字を区別します。 ただし、古いコードとの互換性のために、リーダを大文字小文字を区別しないモードにすることが できます。

#!fold-caseリーダディレクティブを使う

Gaucheはプログラムを読み込む時に、トークン#!fold-caseを見ると大文字小文字を 区別しないモードに切り替わります。トークン#!no-fold-caseは その逆の効果、すなわち大文字小文字を区別するモードへと切り替えます。 これらのトークンは、それが読まれたポートからの以降の読み込みに影響を 与えます。切り替えるトークンが再び読まれるか、EOFに出会うまで影響は継続します。 #!構文についてより詳しくは字句構造を参照してください。 この動作はR6RS及びR7RSで規定されています。

-fcase-foldコマンドライン引数を使う

また、goshインタプリタの起動時に-fcase-foldコマンドライン引数を 与えると、Gaucheは大文字小文字を区別しないモードで動作します (Gaucheを起動する参照)。 このモードでは、リーダはシンボルの読み込みの際に大文字を小文字に変換します。 大文字を含んでいるシンボルに関しては、‘|’ 文字でエスケープされて書き出されます (シンボル参照)。


Next: , Previous: , Up: 主要な概念   [Contents][Index]