Vamos a unir dos listas en Lisp. Si la primera lista es vacia, retornamos la otra lista y si no lo es, costruimos una nueva lista con el primer elemento de la primera lista y la union del resto de la primera lista (porque al primero ya lo sacamos) con la otra lista.
(defun unir (lista1 lista2)
(cond
((null lista1) lista2)
(T (cons (first lista1) (unir (rest lista1) lista2)))
)
)
Si probamos :
> (unir '(1 2 3) '(4 5 6))
(1 2 3 4 5 6)
> (unir '(1 2 3) '(4))
(1 2 3 4)