anchor.diff:  (defvar *recipe-space* nil)
   
   (defun map-recipes (function data-structure &key (leaf-test #'immediate?))
  -  "Apply FUNCTION to all recipes that compute values of DATA-STRUCTURE
  -   and reference data-structures that satisfy LEAF-TEST.
  +  "Invoke FUNCTION for every recipe that computes values of DATA-STRUCTURE
  +   and references data-structures that satisfy LEAF-TEST.
   
      For every recipe, FUNCTION receives the following arguments:
      1. the recipe
  
positive.code:                (collect
                     `(defun ,name ,lambda-list
                        ,(if variadic?
                             `(hlist* ',name ,@lambda-list)
                             `(hlist ',name ,@lambda-list))))
                 (collect
                     `(defun ,(symbolicate name "?") (x)
                        (and (hconsp x) (eq (hcons-car x) ',name))))))))))
  
  ;;; The grammar of a recipe is:
  
  
negative.code:                   (λ
                     (let (args)
                       (iterate (for input-iterator in-vector input-iterators downto 0)
                                (setf args (cons (funcall input-iterator) args)))
                       (%call (operator node) args)))))
                 ;; eliminate reference nodes entirely
                 (reference
  