<div dir="ltr">Happy new year Racketeers,<br><br>The Little Schemer is my favorite book.<br>I have a kind of Sisyphus relationship with it.<br>In the preface they advice to not read it, in less then 3 times.<br>The jokers! It's more then 3 years I read this book, from time to time.<br>Hoping to get further and further, each time.<br><div>I enjoy to start over and over, without completely understanding it.<br></div><div>Like if: once it 's completely understood, there is no more interesting stuff on earth. <br></div>This time i got stuck much earlier, then normal, extremely early.<br> <br>(define lat?<br>    (lambda (l)<br>      (cond <br>            ((null? l) #t)<br>            ((atom? (car l)) (lat? (cdr l)))<br>            (else #f))))<br><br>An empty list is a list, but is it a lat ?<br>If
 you give an empty list as argument to the lat?-function, the answer is 
yes. But an atom must be a string of characters or numbers, or even one 
character, or a combination of special characters as long as it is not 
an ( or an ). The empty list contains no characters at all, so it can 
not be a list of atoms. It would be OK, if you recur at least once. But 
when you feed an empty list, this is not the case. Then the answer of 
(null? l) should be #f<br><br>Rewriting the function that way, would never give #t as answer<br><br>(define lat?<br>    (lambda (l)<br>      (cond <br>            ((null? l) #f)<br>            ((atom? (car l)) (lat? (cdr l)))<br>            (else #f))))<br><div><br><br></div><div>So an empty list has to be a lat, and it is not.<br></div><div>Or is it? Then an empty list can be anything.<br><br><br></div><div>Thanks,<br><br></div>Frank</div>