Cool Example
 
 
Object-oriented programming with closures
Invented by Guy Steele in 1976
(defun make-account (&key (balance 0.0))
  "Create an ACCOUNT object with one slot, BALANCE"
  #'(lambda (message &rest args)
        ;; Object supports three methods or messages
        (:deposit (incf balance (car args)))
        (:withdraw (decf balance (car args)))
(defun send (object message &rest args)
  (apply object message args))