Appeler une fonction

Appeler une fonction dont le nom est déjà dans l'espace des noms de fonctions (voir section 7.1) est trivial. Il suffit de mettre son nom comme premier élément de la liste correspondant à l'appel.

Appeler une fonction dont le nom est dans l'espace des noms de variables est plus compliqué. Pour cela, Common Lisp propose la fonction funcall. Le premier paramètre de cette fonction est la fonction que l'on souhaite appeler, suivi des arguments que l'on souhaite fournir à l'appel. Exemple :

* (funcall #'+ 3 4 5)

12
* (defun f (fun)
    (funcall fun 3 4 5))

F
* (f #'+)

12
* (f #'list)

(3 4 5)
* (f (lambda (x y z) (+ x (* y z))))

23
*

Parfois, on ne connaît pas le nombre d'arguments à l'avance. Si les arguments sont disponibles dans une liste, on peut utiliser la fonction apply :

* (defparameter *l* '(1 2 3 4 5))

*L*
* (apply #'+ *l*)

15
*

Irene DURAND
2011-10-14