2008年05月18日 13:00 [Edit]

jargon - 無名関数(nameless function)?匿名関数(anonymous function)?

最近「DHTMLのイベント登録にonclick属性を使うか否か」という話題がホットになったのだけど、その中のコメントで「「無名関数」じゃなくて「匿名関数」というべき」というコメントを見かけたのだけど、私はむしろ「無名関数」の方がよいと考えたのでentry。

匿名実名問題ではなくて、匿名無名問題ね:-)


たしかに、現状ぐぐると「匿名関数」の方が「無名関数」よりも10倍も多い。

英語だと、その差はもっと開く。

しかし、よく考えてみると、匿名とは名前を匿う=隠すことではあっても名前そのものがないことではない。その点に留意すれば、匿名(anonymous)よりも無名(nameless)の方が表現としては適切ではないか。

ちなみに、匿名関数の別名としてクロージャー(closure)もよく使われている。が、本来のクロージャーは変数を内包(enclose)していなければならない。たとえば

var counter = 0;
window.setInterval(function(){
  document.getElementById('counter').innerHTML = counter++;
}, 100);

setInterval()の第一引数はクロージャーだけど、

window.setInterval(function(){
  document.getElementById('date').innerHTML = new Date();
}, 100);

はクロージャーではない。

その他、サブ(sub)とかラムダ(lambda)というあだ名もあるけど、前者はPerlコミュニティ、後者はLispコミュニティでないと通じない方言なので、やはり通常は無名関数、英語では nameless function と呼ぶのがよいとではないかと考える。

ところで、リテラル(literal)などを「無名データ」とか「匿名データ」と呼ばないのは何故だろう?

Dan the Man with too Many Functions to Name - So make it nameless if ok


この記事へのトラックバックURL

この記事へのコメント
リテラルは、指し示すもの(name = id = index)と指し示されるもの(body)が一致している、という意味で、文字通り「文字通り」なのだと思います。:)
Posted by kenn at 2008年05月22日 09:55
> ところで、リテラル(literal)などを「無名データ」とか「匿名データ」と呼ばないのは何故だろう?

「リテラル」という立派な名前を持っているからでしょう。
Posted by anonymous at 2008年05月19日 15:59
そもそも anonymous という言葉には、「無名」ではなく「匿名」だ、というはっきりした意味がないと思う。
Posted by Kei at 2008年05月18日 14:02
念野タメさん(素晴らしいお名前)、
あれ?ほんとだ?というわけでswap。
Dan the Typo Generator
Posted by at 2008年05月18日 13:52
タイトルの括弧内、"anonymous" と "nameless" が入れ違っているよーな気が...。
Posted by 念野タメ at 2008年05月18日 13:26