2011/01/21
名前づけ
http://twitter.com/gengar68/statuses/28615043041992704
@gengar68 shiftもresetもマクロなのが気持ち悪い.いや,マクロもあったらいいけど,Scheme的には関数で書けるならプリミティブは関数であるべきなんじゃないの?call/ccのように.
そーなんだよねー。だからKahuaではshift相当物としてcall/pcというのを入れたりもしたんだけど、 shift, resetはプリミティブとして定着しちゃったっぽいので、refj:gauche.partcontでは諦めた。
shift, resetという名前も一般的すぎるんだよな。call-with-current-continuationは多義的に取りようがないけど、shiftやresetっていろんな場面でいろんな意味に使われるわけだし。
で、こっから先は印象論なんだけど。こういう名前の付け方ってCSのサイエンス寄り、あるいは数学よりの人っぽい感じがする。後で、それが使われてるところだけ見ても分かるように記述的な名前をつけようってんじゃなく、「定義見ればわかるんだからこれでいいっしょ」的な。いやもちろんそのアイディアに至るまでの議論の歴史とかは踏まえてるんだろうけれど、そういう論文を順繰りに追ってないと、なんでそういう名前になってるのかわからない。Haskellの本読んでても、新しい概念に対してわりと無造作に短い名前や記号を割り当ててる感じがして、貴重な名前をそんなに大胆に使っちゃっていいのかしら、と心配になったりする。3文字までの記号のみの組み合わせなんて限られた資源なのに。
(名前空間があるからいいじゃん、というのはまた別で、コンパイラは名前空間できっちり意味を分けられるけど、読んでる人間にとっては「どっからimportしてきた名前か」とか「このモジュール省略名の本名これだ」とかいうのは隠された文脈になるわけで。)
Common Lispな人はその逆で、エディタが補完してくれるからいいじゃん、とばかりに、やたらと長い名前をつけたがるような気が。Javaの名前もうんざりするほど長いね。「インダストリ」寄りの感覚なのかな。
Tags: Programming, Lisp, Scheme, Haskell
ささだ (2011/01/22 13:42:28):
shiro (2011/01/23 08:25:15):