next up previous
Next: 4.2 リードマクロ Up: 4 関数閉包(closure) Previous: 4 関数閉包(closure)

4.1 レキシカルクロージャ

CommonLispではクロージャが定義された時の局所変数のみ(変数以外では,局 所関数,タグ,局所マクロ,ブロックなども保存される)を保存するために, レキシカルクロージャ(lexical closure)と呼ばれる. レキシカルというのは,字面上でということで,実行時で決まるというのでは なく,プログラムのソース上でそれが定義されているところでという意味であ る. 通常のデータはquoteというスペシャルフォームでデータとして与えられるが, 関数は,functionというスペシャルフォームによりデータとして与えることが できる.functionに与えられた関数シンボルやラムダ式は,レキシカルクロー ジャを返すことになる.クロージャは,そのクロージャが生成される際の変数 のバインディング情報が閉じ込められた関数定義である.レキシカルク ロージャとは,スコープがレキシカルのルールにのっとっているクロージャで ある.クロージャはいわば環境を伴った関数データといえる.

generated through LaTeX2HTML. M.Inaba 平成18年5月7日