anchor.diff:  
   ;; [TODO] should this always copy the arg-objs?
   (defun basic-arg-matchp (func arg-types arg-objs)
  -  (print "basic match")
     (let ((spec-types (v-argument-spec func)))
       (if (loop :for a :in arg-types :for s :in spec-types :always (v-typep a s))
           (list 0 func arg-objs)
  
positive.code:           (error () nil)))))
  
  (defun glsl-arg-matchp (func arg-types arg-objs)
    (print "spec match")
    (let* ((spec-types (v-argument-spec func))
           (spec-generics (positions-if #'v-spec-typep spec-types))
           (g-dim (when spec-generics 
  
negative.code:     (error () (make-instance 'code :type (make-instance 'v-error)))))
  
  (defun special-arg-matchp (func arg-code arg-objs arg-types any-errors)
    (let ((method (v-argument-spec func)))
      (if (listp method)
          (when (not any-errors) (basic-arg-matchp func arg-types arg-objs))
  