anchor.diff:  ;;
   
   (in-package :com.gigamonkeys.yamp)
  +
  +;;; TODO:
  +;;;
  +;;; - state manipulation
  +;;;
  +;;; - IF forms
  +;;;
   
   #|
   
  
positive.code: 
        ((progn-p exp)
         (thunk (compile-progn (rest exp) text state position names (gensym "R")) text state position))
        ((or-p exp)
         (thunk (compile-or (rest exp) text state position names (gensym "R")) text state position))
  
  
negative.code:        (compile-progn (rest body) txt s p names (gensym "R"))))))
  
  (defun progn-wrapper (expr ok result s p continuation failure)
    (if (null continuation)
        expr
        `(multiple-value-bind (,ok ,result ,s ,p) ,expr
           (if ,ok
               ,(or continuation `(values t ,result ,s ,p))
               ,failure))))
  
  (defun compile-or (body txt st pos names result)
    "Compile the forms in an OR so that the OR matches if any of the
  