anchor.diff:  
   ;; TODO
   ;; [ ] fill out the README with examples and documentation
  -;; [x] another layer of expansion so you can overload macro names
  -;;        primitives vs. clauses?
   ;; [ ] key macros
  -;; [ ] eliminate (and list) checks
   ;; [ ] defmacro redefinition
   
   (defparameter clauses (make-hash-table :test #'equalp))
  
positive.code:       (otherwise       (error "something went very wrong"))))
  
  (defun generate-match-code (exp)
    `(when (and list ,(match-test (car exp)))
          ,(if (not (cdr exp)) 't
              `(let ((list (cdr list)))
                    ,(match (cdr exp))))))
  
  (defun generate-atom-code (exp)
    `(when (and list (equalp ,(car exp) (car list)))
          ,(if (not (cdr exp)) 't
             `(let ((list (cdr list)))
                   ,(match (cdr exp))))))
  
negative.code:                 (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)
  