ねこ丸です。
機械伯爵 writes:
> ・「匿名関数」という言い方は、私も別に良いと思わないので、今後できるだけ
> 使わない、で良いと思う
>
> ・ただ、「無名」には「匿名」の意味もあるので、紛らわしいのでは?
>
> ・しかし、「無名関数」という呼ばれ方に歴史があるので、「無名」の「関数」
> ではなく、「シンボルとバインドされていない関数オブジェクト」の意味で
> 「無名関数」という言葉を使う、という話は納得できる
これでいいんじゃないでしょうか。
そして、ここで「匿名」と「無名」だけ取り出す意味はないと思います。完
全な固有名詞ならいざ知らず、同じ字面、発音で別な意味を持つ言葉も、近い、
あるいは同じ意味を持つ別な言葉も非常にたくさんあります。これらが互いに
誤解を生む可能性は常にありますが、その言葉が語られる文脈によってはまっ
たく問題にならないこともあります。
この場合は後者ではないでしょうか? 今語られているのはプログラミング
言語にまつわる話における無名関数、匿名関数という言葉の話です。この文脈
を無視して無名、匿名だけを取り出して紛らわしいかどうかを問題にする必要
はないと思います。
言ってしまえば専門用語なんだから一般的な日本語としての誤用がそこに含
まれていても仕方ないし、そんなことはたいした問題ではない、とワタシは考
えています。
匿名関数における違和感の表明は「無名関数」の方が昔からよく聞くから慣
れているのと、匿名でなく無名になっている理由を自分で当てずっぽで考えた
ものです。それ以上の意味はないです。
脱線ですが、PHP のマニュアルに「匿名関数」と書かれていて探せなかった
ことは以前触れましたが、PHP の create_function() によってできあがる関数
は本当に「匿名」関数です。実際には問答無用でグローバルな空間に、「普通
の方法では名付けることのできない名前を持って」存在しています。この名前
を特定すれば、代入した変数以外からこの関数にアクセスできてしまいます。
アドレスとか内部の ID とかそういうものではなく、アクセスしにくくなって
はいるものの、まぎれもなく名前です。
--
ねこ丸