anchor.diff:  ;;;; * Utils
   
   (defun lisp1s (forms)
  +  "Convert a list of forms to Lisp-1 style."
     (mapcar #'lisp1 forms))
   
   (defun lisp1b (binds)
  +  "Convert an alist of (VAR . FORM) to Lisp-1 style."
     (mapcar (lambda (bind)
   	    (cons (car bind)
   		  (lisp1 (cdr bind))))
  
positive.code: ;;;; * Entry point
  
  (defgeneric lisp1 (form)
    (:documentation "Translate FORM from Lisp-1 to Lisp-2"))
  
  (defmethod lisp1 (form)
    (unwalk-form (lisp1 (walk-form form))))
  
  (defmacro with-lisp1 (form)
    (lisp1 form))
  
  (defmacro deflisp1-walker (class (&rest slots) &body body)
    `(defmethod lisp1 ((form ,class))
       (with-slots ,slots form
         ,@body)))
  
  ;;;; * Special Variables
  
  (defvar *bound-vars* nil)
  
  ;;;; * Definers
  
  (defmacro defun1 (name (&rest args) &body body)
    (let1 *bound-vars*
        (append *bound-vars* (extract-argument-names args :allow-specializers nil))
      `(defun ,name ,args
         ,(lisp1 `(block ,name ,@body)))))
  
  (defmacro defmethod1 (name (&rest args) &body body)
    (let1 *bound-vars*
        (append *bound-vars* (extract-argument-names args :allow-specializers t))
      `(defmethod ,name ,args
  
negative.code: 
  (deflisp1-walker multiple-value-call-form (func arguments)
    (new 'multiple-value-call-form
         :func      (lisp1  func)
         :arguments (lisp1s arguments)))
  
  (deflisp1-walker multiple-value-prog1-form (first-form other-forms)
    (new 'multiple-value-prog1-form
         :first-form  (lisp1  first-form)
         :other-forms (lisp1s other-forms)))
  
  (deflisp1-walker symbol-macrolet-form (binds body)
  