anchor.diff:  ;;;;  [{[ERB _] + [NRG _] ->> [[ERB 1] [NRG 1]]}
   ;;;;   (|.SET-RATE-FUNCTION| 'MASS-ACTION 0.001)])
   
  +;;;; WITH-SUBSTITUTION-TABLE:
  +;;;; User supplies a table of variables and substitutions for those
  +;;;; variables.  The block of code following the table is 
  +;;;; EXAMPLE:
  +;;;; (with-substitution-table 
  +;;;;                  ((a b c)
  +;;;;                   (1 2 3)
  +;;;;                   (4 5 6))
  +;;;;                (format t "~A ~A ~A, " a b c))
  +;;;; =M>
  +;;;; (PROGN
  +;;;;  (FORMAT T "~A ~A ~A, " 1 2 3)
  +;;;;  (FORMAT T "~A ~A ~A, " 4 5 6))
  +;;;; =>
  +;;;; 1 2 3, 4 5 6
  +
   (defmacro with-substitution-table ((header &rest data) &body body)
     "The table consists of a header (symbols/column names) and data, a 
      set of lists containing the values corresponding to each column.
  
positive.code:     `(with-substitutions ,binding-sets
         ,@body)))
  
  ;;;; EXAMPLE:
  ;;;; (with-substitution-table 
  ;;;;                  ((a b c)
  ;;;;                   (1 2 3)
  ;;;;                   (4 5 6))
  ;;;;                (format t "~A ~A ~A~%" a b c))
  ;;;; (PROGN
  ;;;;  (FORMAT T "~A ~A ~A~%" 1 2 3)
  ;;;;  (FORMAT T "~A ~A ~A~%" 4 5 6))
  
  (defmacro with-data-table ((&key row col data) (colnames &rest rows) &body body)
    "Treats nil and _ as empty. "
    (let ((sub-table  (mapcan
                       (lambda (rowlist)
                         (loop with rowname = (first rowlist)
                               for colname in colnames
                               for d in (rest rowlist)
                               when (and d (not (eq d '_)))
                               collect (if (listp data) (list* colname rowname d)
                                         (list colname rowname d))))
                       rows)))
  
negative.code:             ,@sub-table)
           ,@body))))
  
  
  ;; WITH-SUBSTITUTED-COMBINATIONS:          
  (defmacro with-substituted-combinations (substitution-sets &body body)
    "Where Bindings = ((v1 m1 m2 m3 ..)
                       (v2 m4 m5 m6 ...)
  