anchor.diff:                  (t (setf body (subseq body x)) (finish))))
       (destructuring-bind (exp match-form &rest rest) body
         (multiple-value-bind (match-form bindings) (expand-main match-form)
  +         (when (and (listp match-form) (symbol? (car match-form)) 
  +                    (gethash (string (car match-form)) primitives))
  +               (setf match-form (list match-form)))
           `(let ,(append `((list ,exp)) (simple-pair bindings nil))
              (if ,(match match-form)
                   (progn ,@rest)
  
positive.code:                        ((symbol-eq 'quote (car exp)) (return-from expand-macros exp))
                         (t (cons (car exp) (mapcar #'expand-macros (cdr exp))))))
             (awhen (gethash (string (car exp)) clauses)
                    (expand-macros (funcall it (cdr exp))))
             (multiple-value-bind (a b) (macroexpand-1 exp)
                (when b (expand-macros a)))
             (mapcar #'expand-macros exp))
  
negative.code:       (otherwise       (error "something went very wrong"))))
  
  (defun generate-match-code (exp)
    `(when ,(match-test (car exp))
           ,(if (not (cdr exp)) 't
              `(let ((list (cdr list)))
                    ,(match (cdr exp))))))
  
  (defun generate-atom-code (exp)
    `(when (equalp ,(car exp) (car list))
          ,(if (not (cdr exp)) 't
             `(let ((list (cdr list)))
                   ,(match (cdr exp))))))
  