Island Life

< 非公式GaucheAfternoon | If we lose, then what the hell, at least we died trying. >

2007/04/30

名前はまだない

hirax.netの平林さんがblogでMathematicaの無名関数について 書いていた

「無名」というところが重要で、名前がないから、使ったら最後もう 二度と呼ぶ・使うことはできない、ということである。つまりは、 「使い捨ての関数」だ。この「関数を使い捨てる」というところで、 どうしても引っかかってしまう。
…(中略)…
けれど、関数を書く場合には、(ハッカーでない私たちは)頭も多少使わざるをえない。 すると、せっかく考えて・苦労して書いたのだから、名前をつけて、あとで 呼んでまた使うことができるようにしたい、などと思ってしまうのである。

これはとても面白い。 というのも、無名関数に慣れた人間にとっては逆に 「名前」の方が勿体ないという感覚があるからだ。

  • 名前は限りある資源である。もちろんいくらでも長い名前を つけてゆけば事実上無限に使えるが、読み書きに困らない、つまり 適切な長さまでで、かつふさわしい意味を持つ文字列というのは あまり多くない。
  • さらに、ふさわしい名前をつけるのには結構頭をつかう。 関数の中身を書くよりももっと悩むことだって少なくない。 だから名前をつけずに済ませられるならそれに越したことはない。

前者の感覚から、たとえ名前をつけてもなるべくその影響範囲を 少なくしたいという指針が導かれる。Gaucheだとモジュールで グローバル名前空間を分けられるがそれでも範囲が大きすぎると 感じることが多く、内部defineを多用することになる。

後者の感覚は関数名だけでなく関数引数にも及ぶ。cutとか コンビネータの効能は、引数に名前をつけなくて済むことだ。 どうしても付けなくちゃならないときでもついaとかbとかxとか…

Tag: Programming