anchor.diff:  
   (defvar *ops*)
   
  -(defun op (result-types body args)
  -  (let ((op (%op result-types body args)))
  +(defun %op (result-types body args)
  +  (let ((op (%%op result-types body args)))
       (vector-push-extend op *ops*)
       (values-list (op-writes op))))
  +
  +(defmacro op ((&rest types) body &rest args)
  +  `(%op ',types ,body (list ,@args)))
   
   (defvar *vector*)
   
  
positive.code:   deps
    writes)
  
  (defun %op (result-types body args)
    (let ((results (mapcar (lambda (type)
                             (vval type))
                           result-types)))
  
negative.code:                   (load-op
                     (let ((var (load-op-var op)))
                       `((,(vval-name var)) (,(vval-type var))
                         (aref vec (+ start ,(load-op-idx op))))))
                    (store-op
                     `(() () (setf (aref vec (+ start ,(store-op-idx op)))
                                   ,(let ((var (store-op-var op)))
                                      (if (vval-p var)
                                          (vval-name var)
  