In the first group of languages, an empty list is not treated as "falsey" and instead is treated as a "true" value. In a pattern and racket, #false is the only false value, so even if '() is null, null is not false; in clojure, an empty list does not match nil, so it is also "true".
In the second group, an empty list is synonymous with nil and is treated as false, which causes nil to return. However, a list with items is not the same as zero, and therefore is again considered to be a true value.
The final piece of the puzzle is that and returns the last right value if all the values โโpassed are true.
source share