anchor.diff:         [(eq? pattern 'nil) `(eq? ,symb nil)]
          [(type-predicate? pattern) `(,pattern ,symb)]
          [true ~(eq? ,symb ',pattern)])]
  +    [(key? pattern)
  +     `(eq? ,symb ,pattern)]
       [(or (number? pattern) (boolean? pattern) (string? pattern))
        `(= ,symb ,pattern)]
       [true (error (.. "unsupported pattern " (pretty pattern)))]))
  
positive.code:            | ( as pattern metavar ) ;; as
             | ( pattern * ) ;; list
             | ( pattern + . pattern ) ;; list+rest
   literal ::= int | string | boolean | symbol
   metavar ::= '?' symbol
   ```
  
  
negative.code:             out)])]
        [(meta? pattern)
         `((,(struct :tag "symbol" :contents (sub (get-idx pattern "contents") 2)) ,symb))]
        [(or (number? pattern) (boolean? pattern) (string? pattern) (key? pattern) (eq? pattern '_) (and (! (meta? pattern)) (symbol? pattern)))
         '()]
        [true (error (.. "unsupported pattern " (pretty pattern)))])))
  
  