anchor.diff:           (*debugger-hook* me-or-my-encapsulation))
       (invoke-restart-interactively restart)))
   
  +(define-command (:h :help) ()
  +  (loop :for (names function docstring) :in *commands* :do
  +    (format t "~&~{~s~^ ~}~20,5T ~a~%" names docstring)))
  +
   (let (* ** *** - + ++ +++ / // /// values)
     (defun eval-print (-)
       (setq values
  
positive.code:   (let ((*commands* *commands*))
      (add-command '(:bt :backtrace)
                   #'(lambda ()
                       (format t "~&~a~%" *backtrace-string*)))
      (add-command '(:c :cont :continue)
                   #'(lambda (arg)
                       (when (typep arg `(integer 0 ,(1- (length choices))))
                         (return-from one-of (nth arg choices)))))
      (loop
        (multiple-value-bind (x args)
            (readline-read (format nil "~%[DEBUGGER]~%"))
  
negative.code: (defvar *eof-value* (gensym "EOF"))
  (defvar *commands* nil)
  
  (defun add-command (names function docstring)
    (push (list names function docstring)
          *commands*))
  
  (defmacro define-command ((name &rest rest-names) parameters &body body)
  
    `(add-command ',(cons name rest-names)
                  #'(lambda ,parameters ,@body)
                  ,(if (and body (stringp (car body)))
                       (car body)
                       "")))
  
  (defun find-command (x)
    (loop :for (names function docstring) :in *commands* :do
      (when (member x names)
        (return-from find-command function))))
  
  (defun add-history (str)
    (cffi:foreign-funcall "add_history"
  