Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2009-03-28

CLは標準でシンボル名の大文字小文字を区別して読まない件

| 02:01 | CLは標準でシンボル名の大文字小文字を区別して読まない件 - わだばLisperになる を含むブックマーク はてなブックマーク - CLは標準でシンボル名の大文字小文字を区別して読まない件 - わだばLisperになる

気付けばShibuya.lispの黒田さんのTTからもう一ヶ月経つのですが、割と誤解が多いのでフォローで書いておきたいと思っていて書けてなかったことに、CLはシンボル名の大文字小文字を区別しない件についてがあります。

大文字と小文字を小文字を区別しない件については、自分は区別しない方が好き派なのですが、今どきの主流の考えでは、「区別しないなんて不便だー」となるのではないかと思います。

実際に、「区別しなんて時代錯誤だー」とか、「予約語とバッティングするのがいやだー」等をみかけました。

ここで、CLはどういうことになっているのかを、解説しますと、

まず、

1) 文字列の中身は区別される→ "foo"と"FOO"は別物

です。どんな状況でも一緒ではなく、文字として大文字しかないのではありません。

2) CLでは、シンボルはリード時に大文字にされて解釈される

ので、fooは、FOOとして読まれます。エスケープすれば、大文字小文字の区別を保持できますので、|foo|とfoo(FOO)は別物で、簡単に言えば、小文字で書いても大文字に直されるという感じです。

ということで先約のある名前は、CLでは、PIのようになっていますので、|pi|や、|pI|と書けばバッティングは回避できることになりますし、CLでは名前に記号も使えますので、まず問題になることはありません。(どちらかというと大文字小文字を区別するか否かということよりも名前に記号が使えない方が余程不便に感じます。)

そして、これから分かるように、区別できないわけではないということで、「区別しなんて時代錯誤だー」も「予約語とバッティングするのがいやだー」も当っていないということになります。(さらにやろうと思えば、標準機能で大文字小文字を区別する方法はありますので、そちらの感覚に合せることも可能です)

つまり、機能としては、区別しないこともできるし、区別もできるということになるのですが、デフォルトで区別する他の言語の処理系と比較すると、仮にその処理系に、大文字と小文字の区別をしないための記法が存在しないならば、CL方式の方が両方を書き分けられる分、表現力は上とも言えます。

箸を使わない文化圏からみれば、箸を使って食べるのはへんてこで不便にしか見えないようなものかもしれません。

自分は、このようなCLの性質に慣れてしまっているので、こちらの方が心地良くて、また色々記述を工夫して遊べるので断然こちらの方が好きです。

しかしながら、UNIXを代表する文化は区別する派であり、そちらが主流であるのは明白なので、時代は区別する方向に流れて行くのだろうなー思うと若干寂しいところです。