anchor.diff:  (defun has-lambda-keywords-p (list)
     (some (lambda (p) (find p lambda-list-keywords)) list))
   
  +(defun constrain-return-type (return-type)
  +  (if (and (consp return-type)
  +           (eq 'values (first return-type)))
  +      (if (has-lambda-keywords-p return-type)
  +          return-type
  +          (append return-type '(&optional)))
  +      `(values ,return-type &optional)))
  +
   #-lparallel.with-debug
   (progn
     (defmacro defun/inline (name params &body body)
  
positive.code:   (defmacro defun/type (name params arg-types return-type &body body)
      "Shortcut for 
         (declaim (ftype (function arg-types return-type) foo) 
         (defun foo ...)."
      (with-parsed-body (docstring declares body)
        `(progn
           (declaim (ftype (function ,arg-types ,return-type) ,name))
  
negative.code: #+lparallel.with-debug
  (progn
    (defmacro defun/type (name params arg-types return-type &body body)
      (setf return-type (constrain-return-type return-type))
      (with-parsed-body (docstring declares body)
        `(progn
           (declaim (ftype (function ,arg-types ,return-type) ,name))
  