Para além do if, existem outras expressões condicionais em Lisp. O cond é uma versão mais potente que o if. É uma espécie de switch-case do C. A sua sintaxe é:
(cond (condição-1 expressão-1) (condição-2 expressão-2)(condição-n expressão-n))
Designa-se o par (condição-i expressão-i) por cláusula. O cond testa cada uma das condições em sequência, e quando uma delas avalia para verdade, é devolvido o valor da expressão correspondente, terminando a avaliação. Um exemplo será:
> (cond ((> 4 3) 5) (t 6)) 5
O cond permite uma análise de casos mais simples do que o if.
(defun teste (x y z w) (cond ((> x y) z) ((< (+ x w) (* y z)) x) ((= w z) (+ x y)) (t 777)))
A função equivalente usando if seria mais complicada.
(defun teste (x y z w) (if (> x y) z (if (< (+ x w) (* y z)) x (if (= w z) (+ x y) 777))))