クロージャ

http://d.hatena.ne.jp/m-hiyama/20070523/1179888512

解決しかかったところで余計なことをいって混乱に拍車をかけてみる。

私の知る限り、関数型言語業界での「クロージャ」は、あくまで高階関数を実装するときに利用可能なデータ構造の一つであって(他の方法もある)、言語機構の名前ではない…と思っていました。Schemeの(実装ではなく)仕様であるR5RSなどにも、"closure"という言葉は出現しませんし(文献リスト以外)、Landinのオリジナル論文にも「クロージャ=環境+仮引数名+(関数本体の)コード」とあるようですし…

ところが、

http://en.wikipedia.org/wiki/Closure_(computer_science)

等を見るに、どうもSmalltalkあたり(?)で(追記:「Smalltalkで」は濡れ衣のようです。コメント参照)クロージャ」は言語機構の名前になってしまったようです。C++の「抽象データ型」(ほとんど「クラス」のこと?)もそうですが、ま た オ ブ ジ ェ ク ト 指 向 言 語 の 仕 業 か !:-)

…だから記事の宣伝じゃないってば。

P.S. そういえば"boxing/unboxing"も(おそらく)多相関数型言語の最適化コンパイラの内部処理だったのが、C#で言語機構の名前になったようなものだろうか。まあ、基礎研究が実用化・商業化されるときに用語が曖昧になるのはよくありそうなことだから、目くじら立てることもないか。