anchor.diff:  (import lua/basic (xpcall))
   (import lua/math (max))
   (import base ( defun defmacro if get-idx
  -               and gensym error for
  +               and gensym error for set-idx!
                  quasiquote list or pretty
                  slice concat debug apply
                  /= # = ! - + / * >= <= ))
  
positive.code:   (let* [(val-sym (gensym))
           (compile-arm
             (lambda (pt)
               `(,(compile-pattern-test (car pt) val-sym)
                 (let* ,(compile-pattern-bindings (car pt) val-sym)
                   ,@(cdr pt)))))]
  
negative.code:   (let* [(pattern (car pt))
           (value (cadr pt))
           (val-sym (gensym))]
      (assert-linearity! pattern)
      `(let* [(,val-sym ,value)]
         ,(compile-pattern pattern val-sym body))))
  
  