anchor.diff:  (defun add-history-expr (x)
     (add-history (prin1-to-string x)))
   
  +(defun read-args-from-string (str)
  +  (with-input-from-string (in str)
  +    (loop :for x := (read in nil '#1=#:eof)
  +      :until (eq x '#1#)
  +      :collect x)))
  +
   (defun readline-read (prompt)
     (let ((line (rl:readline :prompt prompt)))
       (loop
  
positive.code: 
  (in-package :repl)
  
  (defun command (cmd arg-string)
    (multiple-value-bind (stdout-string stderr-string $?)
        (trivial-shell:shell-command
         (format nil "~(~a~) ~a" cmd arg-string))
      (princ stdout-string)
      (princ stderr-string)
      $?))
  
  (defun common-prefix (items)
    (subseq (car items)
  
negative.code:                                 (rl:readline :already-prompted t))))
              ((and (zerop count) (symbolp x) (not (null x)))
               (add-history line)
               (cond ((command-p x)
                      (let ((args
                             (read-args-from-string
                              (subseq line pos))))
                        (return (call-command x args))))
                     ((fboundp x)
                      (let ((expr
                             `(,x ,@(read-args-from-string
                                     (subseq line pos)))))
                        (return expr)))
                     (t
                      (return x))))
  