|forms||forms which value is considered|
AND macro computes logical "and" function. Forms evaluation starts from left. Value from the first form that decides result is returned so forms at end of argument list may not evaluated.
(and t t t nil t) => NIL (and t t t t) => T (and) => T
(and (progn (write "SEEN") nil) (progn (write "UNSEEN") t)) => "SEEN" NIL (and 4 5 6) => 6