anchor.diff:      [(list? pattern)
        (cond
          [(eq? (car pattern) 'as)
  -        (compile-pattern-test (cadr pattern))]
  +        (compile-pattern-test (cadr pattern) symb)]
  +       [(eq? (car pattern) '->)
  +        (compile-pattern-test (caddr pattern) `(,(cadr pattern) ,symb))]
          [(cons-pattern? pattern)
           (let* [(pattern-sym (gensym))
                  (lhs (cons-pat-left-side pattern))
  
positive.code:  pattern ::= literal
             | metavar
             | _
             | ( as pattern metavar ) ;; as
             | ( pattern * ) ;; list
             | ( pattern + . pattern ) ;; list+rest
  
negative.code:        (cond
           [(eq? (car pattern) 'as)
            `(,@(compile-pattern-bindings (caddr pattern) symb) ,@(compile-pattern-bindings (cadr pattern) symb))]
           [(eq? (car pattern) '->)
            (compile-pattern-bindings (caddr pattern) `(,(cadr pattern) ,symb))]
           [(cons-pattern? pattern)
            (let* [(lhs (cons-pat-left-side pattern))
                   (rhs (cons-pat-right-side pattern))
  