Общий Lisp - Список распаковки? (аналогично Python)

В Python, предполагая, что определена следующая функция:

def function(a, b, c):
    ... do stuff with a, b, c ...

Я могу использовать эту функцию, используя распаковку последовательности Python:

arguments = (1, 2, 3)
function(*arguments)

Существует ли аналогичная функциональность в Common Lisp? Итак, если у меня есть функция:

(defun function (a b c)
    ... do stuff with a, b, c ...

И если у меня есть список из 3-х элементов, я мог бы легко использовать эти 3 элемента в качестве параметров для функции?

В настоящее время я реализую это:

(destructuring-bind (a b c) (1 2 3)
    (function a b c))

Есть ли лучший способ?

Ответы

Ответ 2

Используйте функцию apply:

(apply #'function arguments)

Пример:

CL-USER> (apply #'(lambda (a b c) (+ a b c)) '(1 2 3))
6