anchor.diff:                 and gensym error for set-idx!
                  quasiquote list or pretty
                  slice concat debug apply
  -               /= # = ! - + / * >= <= ))
  +               /= # = ! - + / * >= <= % ))
   (import type ())
   (import list ( car caddr cadr cdr append for-each
                  map filter push-cdr! range snoc
  
positive.code:         (assert-linearity! (caddr pat) seen)]
         [(eq? (car pat) 'optional)
          (assert-linearity! (cadr pat) seen)]
         [(cons-pattern? pat)
          (let* [(seen '())]
            (for i 1 (pattern-# pat) 1
  
negative.code:   (let* [(x (get-idx x :contents))]
      (= (char-at x (#s x)) "?")))
  
  (defun struct-pat? (x) :hidden
    (and (eq? (car x) 'struct-literal)
         (= (% (# (cdr x)) 2) 0)))
  
  (defun assert-linearity! (pat seen) :hidden
    (cond
      [(! seen) (assert-linearity! pat {})]
  