Fonction appliquée à une liste
Comme (mapcar) et (lambda) cette fonction est classée dans le menu liste, car elle est souvent utilisée sur des listes.
Elle diffère de (mapcar) car mapcar applique l'argument fonction à CHAQUE élément de la liste tandis que (apply) applique la fonction à TOUTE la liste et renvoie l'ensemble traité, pas une liste traitée.
Cette fonction transmet une liste d'arguments à une fonction et retourne le résultat de l'évaluation.
Syntaxe : (apply 'fonction liste)
Valeur renvoyée : le résultat de la fonction
Exemple :
Définition de la liste à traiter :
(setq liste1 '( 1 2 3 4))
En utilisant (apply) associé à la fonction addition "+", tous les éléments de la liste vont être additionnés ensemble (1+2+3+4 = 10)
(setq liste2 (apply '+ liste1))
Qui renvoie bien 10, l'addition des éléments de la liste1.
Le premier argument : '+ est la fonction
(elle doit être "quotée" pour ne pas être évaluée dans cette expression)
Le second argument est une liste.
Cette expression est équivalente à :
(eval (cons '+ '(1 2 3 4)) ou bien (eval (cons (quote +) '(1 2 3 4)))
qui s'évalue pas à pas : (eval '(+ 1 2 3 4)) => (+ 1 2 3 4) => 10
Le gros intérêt de cette fonction est qu'elle n'a pas besoin de connaître la longueur de la liste à traiter.
7 décembre 2017
mise à jour 05 mai 2018
mise à jour le 19 avril 2021