いままで、「ふーん」くらいにしか思ってなかったけど、すごく分かりやすい解説を見つけたのでメモる。
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
クロージャ、「使える!」と思った。
0 コメント :
コメントを投稿