and は論理積を返す関数であるが、引数 g 1、g 2、... g n は順番に評価され、評価結果として nil が戻ったところで評価が打ち切られ、 and 式の値として nil を返す。 したがって and は制御構造として用いることができる。例えば、以下の 式、
(and (> a 0) (do_proc a))
は C 言語での、
if (a > 0) do_proc(a);
のような意味を持つ。
g 1〜g n すべてが非 nil だった場合は g n の値が and 式 の値として返される。