anchor.diff:  
   (defun inventory ()
     (cons 'items- (objects-at 'body *objects* *object-locations*)))
  +
  +(defun game-repl ()
  +  (let ((cmd (game-read)))
  +    (unless (eq (car cmd) 'quit)
  +      (game-print (game-eval cmd))
  +      (game-repl))))
  +
  +(defun game-read ()
  +  (let ((cmd (read-from-string (concatenate 'string "(" (read-line) ")"))))
  +    (flet ((quote-it (x) (list 'quote x)))
  +      (cons (car cmd) (mapcar #'quote-it (cdr cmd))))))
  +
  +(defun game-eval (sexp)
  +  (if (member (car sexp) *allowed-commands*)
  +      (eval sexp)
  +      '(i do not know that command.)))
  +
  +(defun tweak-text (lst caps lit)
  +  (when lst
  +    (let ((item (car lst))
  +	  (rest (cdr lst)))
  +      (cond ((eq item #\space) (cons item (tweak-text rest caps lit)))
  +	    ((member item '(#\! #\? #\.)) (cons item (tweak-text rest t lit)))
  +	    ((eq item #\") (tweak-text rest caps (not lit)))
  +	    (lit (cons item (tweak-text rest nil lit)))
  +	    ((or caps lit) (cons (char-upcase item) (tweak-text rest nil lit)))
  +	    (t (cons (char-downcase item) (tweak-text rest nil nil)))))))
  +
  +(defun game-print (lst)
  +  (princ (coerce (tweak-text (coerce (string-trim "() " (prin1-to-string lst))
  +				     'list)
  +			     t
  +			     nil)
  +		 'string))
  +  (fresh-line))
  
positive.code: 
  (defparameter *location* 'living-room)
  
  (defun describe-location (location nodes)
    (cadr (assoc location nodes)))
  
  
negative.code: 	       (look))
  	'(you cannot go that way.))))
  
  (defun pickup (object)
    (cond ((member object (objects-at *location* *objects* *object-locations*))
  	 (push (list object 'body) *object-locations*)
  	 `(you are now carrying the ,object))
  