anchor.diff:            `(,@(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))
  
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-test (car pt) val-sym)
                 (let* ,(compile-pattern-bindings (car pt) val-sym)
                   ,@(cdr pt)))))]
      (debug `(let* [(,val-sym ,val)]
         (cond ,@(map compile-arm pts)
               [true ,(generate-case-error pts val-sym)])))))
  