Resposta ao exercício 56

(defun snoc (elem lista)
  (if (null lista)
    (list elem)
    (cons (first lista) (snoc elem (rest lista)))))

A função snoc já existe em Lisp através da combinação das funções append e list.

(defun rac (lista)
  (if (null (rest lista))
    (first lista)
    (rac (rest lista))))

A função rac já existe em Lisp através da combinação das funções first e last.

(defun rdc (lista)
   (if (null (rest lista))
     nil
     (cons (first lista) (rdc (rest lista)))))

A função rdc já existe em Lisp e denomina-se butlast.