Consider the following definitions:
(defclass <thing> ()
(size :type <number>
:initarg :size
:initvalue 100)
(location :type <symbol>
:initarg :location
:initvalue 'nowhere))
(defclass <animal> (<thing>)
(name :type <top>
:initarg :name
:initvalue 'anonymous)
(hunger :type <number>
:initarg :hunger
:initvalue -1))
(defclass <vegetable> (<thing>)
(nutritional-value :type <number>
:initvalue 0))
(defclass <mineral> (<thing>)
(worth :type <number>
:initvalue 0))
(defclass <venus-flytrap> (<animal> <vegetable>)
(favorite-meals :type <list>
:initvalue '(flies)))
(defclass <fly> (<animal>))
(define popeye (make <animal> :size 150 :name 'popeye))
(define spinach (make <vegetable> :location 'grocery-store))
(define milo (make <venus-flytrap> :name 'milo))
| popeye | spinach | milo |