いままで、「ふーん」くらいにしか思ってなかったけど、すごく分かりやすい解説を見つけたのでメモる。
猿でもわかるクロージャ超入門
xyzzy でやってみる。
;; 問題:呼び出すたびに、1,2,3,...を返すような関数 f( )を定義せよ。 (defun outer () (let ((x 0)) (defun inner () (incf x)))) (setq f (outer)) ;; test (funcall f) ;=>1 (funcall f) ;=>2 (funcall f) ;=>3
クロージャ、「使える!」と思った。