(defmacro caso (exp &rest clausulas) (let ((temp (gensym))) `(let ((,temp ,exp)) (cond ,@(mapcar #'(lambda (clausula) `((eql ,temp ,(car clausula)) ,@(cdr clausula))) clausulas)))))