結論:結局、Javaはクロージャを使えるの?
【追記 2008/7/2】とても昔のClosureについて書いた記事が注目を集めてしまったみたいですが、ぜひ、もっと後で書いた次の記事とその関連スレッドの方も確認してみてください。このときよりも、もう少し事情が分かってから書いたものなので、より正確に状況を理解できると思います。それに、私自身、この言葉にはまだ混乱しています・・・
http://d.hatena.ne.jp/lethevert/20070524/p2
-
-
- -
-
という問いに対して、そろそろ私の結論を整理しておきます。
これは、将来の自分に対する参照の便のための整理です。
前提知識
前提知識として、こちらの内容を読んで理解しておきます。
Closure (computer programming) - Wikipedia
[id:lethevert:20060119:p1]
[id:lethevert:20060121:p2]
また、Lispという違うパラダイムの言語の概念であるものを、適用しようというのだから、それなりに無理があるということも留意しておきます。
クロージャとは?
静的スコープのこと。フリー変数をその変数が字句上で定義された環境に束縛すること。
SchemeがAlgolから取り入れた言語仕様だが、手続きが第一級であるLispにおいて、静的スコープを実現することは他の言語にはない独特の挙動を示すことになり、そのため、特に第一級の手続きが成立している言語における静的スコープのことに限定して、クロージャという用語を使う場合が多い。
(注:以下でクロージャという言葉を使うときは、第一級の手続き、または、第一級のオブジェクトが成立していることを前提とする)