Sendo as listas uma das estruturas básicas do Lisp, a linguagem permite aplicar funções directamente a listas de argumentos através da função apply. Esta é em tudo idêntica à função funcall, mas em vez de ter os argumentos da função a aplicar como argumentos da função funcall, tem-nos numa lista, i.e.:
(funcall func arg-1 arg-2 ...arg-n) <=> (apply func (list arg-1 arg-2 ...arg-n))
Na linguagem Common Lisp, a função apply é uma fusão entre a função funcall e a função apply primitiva, pois é da forma:
(apply func arg-1 arg-2 ...rest-args)
Nesta aplicação o último argumento rest-args é uma lista com os restantes argumentos. Desta forma, pode-se escrever qualquer das seguintes equivalências:
(funcall func arg-1 arg-2 ...arg-n) <=> (apply func (list arg-1 arg-2 ...arg-n)) <=> (apply func arg-1 (list arg-2 ...arg-n)) <=> (apply func arg-1 arg-2 ...(list arg-n)) <=> (apply func arg-1 arg-2 ...arg-n nil))