Resposta ao exercício 78

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