Questa domanda è correlata al codice capitolo 6 del Conrad Barski's Book, Land of Lisp
.Il condizionale nella funzione lisp di Conad Barski è ridondante?
Il codice è il seguente
(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)))))))
Ora guardate la parte (lit ..)
e la roba di sotto di essa .. ((or caps nil) ..)
, quindi la mia domanda è la seguente
- se
lit
è sempre vero, sarà valutato nella prima espressione dichiarata - se non è vero, la seconda espressione sarà sempre valutata a
(or caps false)
=>(or caps false)
che è praticamente inutile?
Quindi la seconda espressione non dovrebbe essere semplicemente (caps (cons (char ...))
?
Questo libro è stato letto da migliaia quindi devo sbagliarmi su qualcosa e io non sono John Bell.
fantastico da sapere, mi chiedo come si collega alla domanda? –
@nerorevenge: la domanda attuale è stata risolta (vedere la risposta di sigjuice). Tieni presente che il codice ha più "problemi" di quelli che hai già rilevato. –
capito. Vi sono altri problemi oltre alla natura ricorsiva della suddetta funzione principale? –