anchor.diff:  (defmacro make (class-name)
     #`(make-instance (class ,class-name)))
   
  -(defmacro defclass (class-name &optional (supers #'()) (slots #'()))
  +(defmacro defclass (class-name &optional (supers #'()) (slot-descriptors #'()))
     (let ((superclass (if (compound-empty? supers) #f (compound-elt supers 0))))
       #`(progn
           (defvar (class ,class-name) (make-class))
  
positive.code:   (%set-class-name c s))
  
  (defun set-slot-value ((a object) (slot-name string) (value object))
    (%set-slot-value a slot-name value))
  
  (defun set-superclass ((class class) (superclass class))
  
negative.code:   #`(defparameter (function ,name) (lambda ,sig ,@body)))
  
  (defmacro let (bindings &rest body)
    #`(funcall (lambda ,(%compound-map (lambda (b)
                                         (if (%compound? b)
                                             (%compound-elt b 0)
                                             b))
                                       bindings)
                 ,@body)
               ,@(%compound-map (lambda (b) 
                                  (if (%compound? b)
                                      (%compound-elt b 1)
                                      #'nil))
                                bindings)))
  
  (defmacro let* (bindings &rest forms) ;; Scheme's letrec*
    #`(let ,(%compound-map (lambda (b)
  