Скажем, у меня есть функция foo:
(defun foo (x y &rest args)
...)
И позже я хочу обернуть его функциональной панелью:
(defun bar (x &rest args)
(foo x 100 args))
Предположим, что бар тогда назывался так: (bar 50 1 2 3)
При такой настройке args представляет собой список в теле bar, который содержит конечные параметры, поэтому, когда я передаю его в foo, вместо получения эквивалента (foo 50 100 1 2 3)
я, конечно же, получаю (foo 50 100 '(1 2 3))
. Если бы это были макросы, я бы использовал ``(foo ,x 100 ,@args)` внутри тела bar для соединения аргументов с вызовом функции. Однако ,@ работает только внутри списка, заключенного в обратные кавычки.
Как я могу сделать такое же соединение в обычной функции?