anchor.diff:                    (lambda ,symbols
                       (declare (ignorable ,@symbols))
                       (values ,@output-forms))
  -                  ,input-constraints
  -                  ,(length output-forms)))))))
  +                  ,input-constraints))))))
   
   (test identity-transformation
     (let ((τ (τ (a b) a b)))
  
positive.code:        :linear-operator A
         :translation-vector b)))
  
  (defun classify-transformation (f input-constraints output-dimension)
    (let* ((input-dimension (length input-constraints))
           (args (map 'list
                      (λ constraint (or constraint 0))
  
negative.code: ;; constants. This makes it possible to move the classification of many
  ;; transformations to load time.
  (define-compiler-macro classify-transformation
      (&whole whole &environment env function input-constraints)
    (if (and (constantp input-constraints env)
             (not (free-variables function)))
        `(load-time-value
          (classify-transformation
           ,function
           ,input-constraints))
        whole))
  
  (defmacro τ (input-forms &rest output-forms)
  