anchor.diff: +; break a string into pieces
  +(defun parse (str)
  +  (let ((result '()) (buff ""))
  +    (loop for i from 0 to (- (length str) 1) do
  +      (if (char= (char str i) #\Space)
  +        (progn (setf result (cons buff result))
  +          (setf buff ""))
  +        (setf buff (concatenate 'string buff (string (char str i))))))
  +    (reverse (cons buff result))))
  +
   ; insert a string into a binary search tree and return it
   (defun insert (tree str)
     (if (null tree)
  
positive.code:     0
      (+ 1 (max (height (cadr tree)) (height (caddr tree))))))
  
  ; load a text file in and add each line to a binary search tree, returning it
  (defun read-data ()
    (let ((tree nil))
  
negative.code:           (setf tree (insert tree line)))))
      tree))
  
  ; main program loop
  (defun main (tree)
    (let ((words (parse (read-line))))
      (unless (string= (car words) "END")
        (dolist (bad (remove-if (lambda (w) (look tree w)) words))
          (format t "~a is spelled wrong!~%" bad))
        (main tree))))
  
  (let ((tree (read-data)))
    (format t "Loaded the words into a tree with height =  ~a.~%" (height tree))
    (main tree))
  
  