anchor.diff:  ;;; developers can rely on the fact that the second argument is always a
   ;;; list of collapsed lazy arrays, i.e., lazy arrays whose shape consists
   ;;; only of ranges with a start of zero and a stride of one.  This function
  -;;; must return one Common Lisp array for each of the supplied lazy arrays.
  -(defgeneric backend-compute (backend lazy-arrays))
  +;;; must return a list with one Common Lisp array for each of the supplied
  +;;; lazy arrays.
  +(defgeneric backend-compute (backend lazy-arrays)
  +  ;; We change the argument precedence order so that we can add default
  +  ;; methods for the case where the second argument is null.
  +  (:argument-precedence-order lazy-arrays backend))
   
   ;;; Ensures that the supplied REQUEST is computed eventually on BACKEND.
   ;;; This function is invoked exactly once for each request, by the Petalisp
  
positive.code:                  (delayed-unknown-p (lazy-array-delayed-action unknown)))
        (error "Not an unknown: ~S" unknown))))
  
  (defmethod backend-evaluator (backend lazy-arrays unknowns)
    (lambda (&rest arrays)
      (let ((*backend* backend))
        (apply #'compute
  
negative.code:                        delayed-action))))
      (request-finish request)))
  
  (defmethod backend-evaluator :before (backend (lazy-arrays list) (unknowns list))
    (dolist (lazy-array lazy-arrays)
      (unless (lazy-array-p lazy-array)
        (error "Not a lazy array: ~S" lazy-array)))
  