-(defmacro make-object (name &key attr bhv look)
- `(let ((object '(:name ,name)))
- (union object
- (union ,(make-object-attributes attr)
- (union ,(make-object-behaviour bhv)
- ,(make-object-look look))))))
+(defun make-object-attributes (attr)
+ (cond ((or (null attr) (atom attr)) nil)
+ (t (let ((rest (make-object-attributes (cdr attr)))
+ (this (object-attribute-definition (car attr))))
+ (setf (getf rest (car this)) (cadr this))
+ rest))))