Функции +, *, list, append принимают произвольное число аргументов. Ключевое слово лямбда-списка &rest может фигурировать в списке формальных параметров.
(defun f (x y &rest z)
(cons (+ x 10) (cons (+ y 20) z)))
(f 1 2 3 4 5)
(11 22 3 4 5)
Параметры x
и y
обязательные:
функция f
принимает не меньше двух аргументов.
При вызове эти первые два связываются с x
и y
соответственно.
Остаточный,
или хвостовой,
параметр z
получит в качестве значения список всех оставшихся аргументов.