anchor.diff:    (and (symbol? symbol)
          (eq? (char-at (get-idx symbol "contents") 1) "?")))
   
  +(defun pattern-length (pattern correction)
  +  (let* [(length 0)]
  +    (for i 1 (# pattern) 1
  +      (if (and (list? (nth pattern i))
  +               (! (eq? (car (nth pattern i)) 'optional)))
  +        (set! length (+ length 1))
  +        0))
  +    (+ length correction)))
  +
  +
   (defun compile-pattern-test (pattern symb) :hidden
     (cond
       [(list? pattern)
  
positive.code:                                                       `(nth ,pattern-sym ,i))))
            `(let* [(,pattern-sym ,symb)]
               (and (list? ,pattern-sym)
                    (>= (# ,pattern-sym) ,(- (# pattern) 2))
                    ,@lhs-test
                    ,(compile-pattern-test
                       (last pattern) `(slice ,pattern-sym ,(+ 1 (# lhs)))))))]
  
negative.code:             (push-cdr! out (compile-pattern-test (nth pattern i)
                                                  ~(nth ,sym ,i))))
            `(let* [(,sym ,symb)]
               (and (list? ,sym) (= (# ,sym) ,(pattern-length pattern 0)) ,@out)))])]
      [(or (eq? '_ pattern) (meta? pattern))
       `true]
      [(and (! (meta? pattern)) (symbol? pattern))
  