Указывает, что следующий аргумент является аргументом rest. В вашем примере sequences
является аргументом отдыха.
В отличие от обычного аргумента, аргумент rest будет потреблять «rest» любых параметров, предоставленных пользователем. Это способ создания функции, которая принимает переменное число аргументов. Внутри тела функции аргументом будет список, содержащий все дополнительные параметры.
Таким образом, если бы у вас была функция, которая выглядела как (add &rest numbers)
, вы могли бы назвать ее как (add 1 2 3 4 5)
, а внутри функции аргумент numbers
будет иметь значение (1 2 3 4 5)
.
Или, например, ((lambda (a &rest r) r) 1 2 3) ;=> (2 3)