SE701:closure.lisp
Jump to navigation
Jump to search
;;; A simple closure in Lisp
(defun make-counter ()
(let ((count 0))
(list #'(lambda () (setq count (1+ count)))
#'(lambda () (setq count (1- count)))
#'(lambda () count))))
(destructuring-bind (inc dec read) (make-counter)
(funcall inc)
(funcall inc)
(funcall inc)
(funcall dec)
(print (funcall read)))