APPEND - соединение списков

Функция append соединяет два или более списков-аргументов в один. Её примерное определение иллюстрирует распространенный приём:
"консить" результат по ходу прохождения одного из аргументов.

(defun append2 (list1 list2)
  (if (null list1)
      list2
      (cons (first list1) (append2 (rest list1) list2))))

Исходные списки не портятся.