Hezky jste se mlhavou formulací u let-u vyhnul detailu, který by vedl k výkladu o proměnné lexical-binding :)
if, and a or, umí víc než se zdá a než je v článku:
(or nil 1 2) => 1, (and 1 2 3) => 3, (if cond do else-1 else-2) je validní (poslední je rozdíl i proti třeba Common Lispu).