anchor.diff:        (let ((handler (eval `(lambda ,args ,@body))))
           (setf env (register env :macrolet name handler))
           (push (cons name handler) (binds macrolet))))
  -    (setf (binds macrolet) (nreverse (binds macrolet))
  -          (body macrolet) (walk-implict-progn macrolet (cddr form) env :declare t))))
  +    (setf (binds macrolet) (nreverse (binds macrolet)))
  +    (multiple-value-setf ((body macrolet) nil (declares macrolet)) (walk-implict-progn macrolet (cddr form) env :declare t))))
   
   ;;;; MULTIPLE-VALUE-CALL
   
  
positive.code:                  (extend-env (car arguments)))))))
        (setf (arguments func) (nreverse arguments))
        ;; 2) parse the body
        (setf (body func) (walk-implict-progn func (cddr form) env :declare t))
        ;; all done
        func)))
  
  
negative.code:          (extend-env (var (rest arguments)) var `(type ,(first arguments))))
          (t
           (extend-env (var arguments) var `(type ,type))))))
    (values environment declaration))
  
  (defun walk-implict-progn (parent forms env &key docstring declare)
    (multiple-value-bind (body env docstring declarations)
        (split-body forms env :docstring docstring :declare declare)
      (values (mapcar (lambda (form)
                        (walk-form form parent env))
                      body)
              docstring
  	    declarations)))
  
  ;;;; Atoms
  
  