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:           `(,@(compile-pattern-bindings (caddr pattern) symb) ,@(compile-pattern-bindings (cadr pattern) symb))]
           [(eq? (car pattern) '->)
            (compile-pattern-bindings (caddr pattern) `(,(cadr pattern) ,symb))]
           [(eq? (car pattern) 'optional)
            (compile-pattern-bindings (cadr pattern) symb)]
           [(cons-pattern? pattern)
            (let* [(lhs (cons-pat-left-side pattern))
                   (rhs (cons-pat-right-side pattern))
  