title: The conditional in Conad Barski's lisp function is redundant?
body: <p>This question is related to the Chapter 6 code of Conrad Barski's Book, <code>Land of Lisp</code>.</p>
  
  <p>The code is the following </p>
  
  <pre><code>(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)))))))
  </code></pre>
  
  <p>Now look at the <code>(lit ..)</code> part and the stuff below it .. <code>((or caps nil) ..)</code>, so my question is the following</p>
  
  <ul>
  <li>if <code>lit</code> is ever true,  it will be will be evaluated in the former expression stated</li>
  <li>if it is not true,  the latter expression will always evaluate to <code>(or caps false)</code> => <code>(or caps false)</code> which is pretty much useless?</li>
  </ul>
  
  <p>So shouldn't the latter expression simply be <code>(caps (cons (char ...))</code> ?</p>
  
  <p>This book has been read by thousands so I must be wrong about something and I'm not John Bell.</p>