- Assume you have the following class defined:

(defclass account ()
  ((account-no :initarg :account-no
               :accessor account-no)
   (balance :initarg :balance
            :initform 0.00
            :accessor account-balance)))

Further assume that a program containing this class definition was started before the introduction of the Euro, so all amounts are given in Belgian Francs. What options do you have to ensure that all existing amounts are automatically converted to Euro?

- Implement a metaclass that enables keeping a history of slot values. For example, assume the following class definition.

(defclass account ()
  ((account-no :initarg :account-no
               :accessor account-no)
   (balance :initarg :balance
            :initform 0
            :accessor account-balance))
  (:metaclass history-class))

The following session should produce the following results:

> (defparameter *account* (make-instance 'account
                            :account-no 12345
                            :balance 10000))
*account*

> (incf (account-balance *account*) 500)
10500

> (decf (account-balance *account*) 2000)
8500

> (incf (account-balance *account*) 3500)
12000

> (history *account* 'balance)
(8500 10500 10000)