anchor.diff:          (values-list (receive-result channel)))))
   
   (defmacro define-defpun (defpun doc defun &rest types)
  -  `(defmacro ,defpun (name params ,@types &body body)
  +  `(defmacro ,defpun (name lambda-list ,@types &body body)
        ,doc
        (with-parsed-body (body declares docstring)
          (with-lock-held (*registration-lock*)
  
positive.code:                                 ,@body))
                             ,@(registered-macrolets kernel))
                    ,@body))
                (defun/wrapper ,name ,(unchecked-name name) ,params
                  ,@(unsplice docstring)
                  (let ((,kernel (check-kernel)))
                    (if (use-caller-p ,kernel)
  
negative.code:          (register-name name)
           (with-gensyms (kernel)
             `(progn
                (,',defun ,(unchecked-name name) (,kernel ,@lambda-list)
                    ,,@(unsplice (when types ``(kernel ,@,(first types))))
                    ,,@(unsplice (when types (second types)))
                  ,@declares
  