anchor.diff:      [(! seen) (assert-linearity! pat {})]
       [(list? pat)
        (cond
  -       [(and (symbol? (cadr pat))
  -             (eq? (cadr pat) '@))
  +       [(eql? (cadr pat) '@)
           (assert-linearity! (caddr pat) seen)]
  -       [(and (key? (cadr pat))
  -             (eq? (cadr pat) ':when))
  +       [(eql? (cadr pat) ':when)
           (assert-linearity! (car pat) seen)]
  -       [(and (symbol? (cadr pat))
  -             (eq? (cadr pat) '->))
  +       [(eql? (cadr pat) '->)
           (assert-linearity! (caddr pat) seen)]
  -       [(and (symbol? (car pat))
  -             (eq? (car pat) 'optional))
  +       [(eql? (car pat) 'optional)
           (assert-linearity! (cadr pat) seen)]
          [(struct-pat? pat)
           (for i 3 (# pat) 2
  
positive.code:     (= (char-at x (#s x)) "?")))
  
  (defun struct-pat? (x) :hidden
    (and (eq? (car x) 'struct-literal)
         (symbol? (car x))
         (= (% (# (cdr x)) 2) 0)))
  
  (defun assert-linearity! (pat seen) :hidden
  
negative.code:     (cond
        [(list? pattern)
         (cond
           [(eql? (cadr pattern) '@)
            `(,@(compile-pattern-bindings (caddr pattern) symb) ,@(compile-pattern-bindings (car pattern) symb))]
           [(eql? (cadr pattern) ':when)
            (compile-pattern-bindings (car pattern) symb)]
           [(eql? (cadr pattern) '->)
            (compile-pattern-bindings (caddr pattern) `(,(car pattern) ,symb))]
           [(eql? (car pattern) 'optional)
            (compile-pattern-bindings (cadr pattern) symb)]
           [(struct-pat? pattern)
            (let* [(out '())]
  