一例としては、メッセージパッシング

(defun counter ()
(let ((c 0))
(lambda (&optional message)
(ecase message
((nil) (incf c))
(:reset (setf c 0))
(:get c)))))

(setf (symbol-function 'f) (counter))

(f)
(f :reset)
(f :get)