タグ

closureに関するChiseiのブックマーク (2)

  • Closure - pattersonの日記

    わかったつもりでいたけど、よくわかっていなかった。 Wikipediaの説明だと、 クロージャ (クロージャー、Closure) は、プログラミング言語において引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決する関数のことである。 http://ja.wikipedia.org/wiki/クロージャ 引数以外の変数を自身が定義された環境において解決する関数? いまいちよくわからない。wikipediaの例をlispに置き換えて実行してみる。 CL-USER> (defun new-counter () (let ((counter 0)) ;;このcounter (defun new-id () (incf counter)))) NEW-COUNTER CL-USER> (setq c1 (new-counter)) NEW-ID CL-USER>

    Closure - pattersonの日記
    Chisei
    Chisei 2010/12/31
    なるほど。実際に書いてみる。
  • クロージャ - Wikipedia

    クロージャ(クロージャー、英語: closure)、関数閉包はプログラミング言語における関数オブジェクトの一種。いくつかの言語ではラムダ式や無名関数にて利用可能な機能・概念である。引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決することを特徴とする。関数とそれを評価する環境のペアであるともいえる。この概念は少なくとも1960年代のSECDマシンまで遡ることができる。まれに、関数ではなくとも、環境に紐付けられたデータ構造のことをクロージャと呼ぶ場合もある。クロージャをサポートする言語によるプログラミングでは、単に関数の中に関数を定義することができるだけでなく、その際に、外側の関数(エンクロージャ)で宣言された変数を暗黙的に内側の関数に取り込んで操作することができる。主な利点としてはグローバル変数の削減やコールバック関数記述の簡素化が挙げられる。 典型的に

    Chisei
    Chisei 2010/12/31
    そういえばPHPでもクロージャ動くようなきがした
  • 1