La fonction d'application la plus simple est
mapc. Elle applique son premier
argument à chaque élément de la liste. La valeur de l'appel est la
liste passée en argument. Par conséquent, la fonction passée en
argument se doit d'avoir des effets de bord (sinon, mapc
est la fonction d'identité). Exemples :
* (defparameter *l* (list "abc" "def" "ghi"))
*L*
* *l*
("abc" "def" "ghi")
* (mapc #'nstring-capitalize *l*)
("Abc" "Def" "Ghi")
* *l*
("Abc" "Def" "Ghi")
* (defparameter *l* (list (list 1 2 3) (list 4 5 6) (list 7 8 9)))
*L*
* *l*
((1 2 3) (4 5 6) (7 8 9))
* (mapc #'nbutlast *l*)
((1 2) (4 5) (7 8))
* *l*
((1 2) (4 5) (7 8))
*
Souvent, la fonction passée en paramètre est une fonction
anonyme construite avec lambda. Exemple :
* (defparameter *l* (list (list 1 2 3) (list 4 5 6) (list 7 8 9)))
*L*
* (let ((x 5))
(mapc #'(lambda (elem)
(setf (car elem) (incf x)))
*l*))
((6 2 3) (7 5 6) (8 8 9))
* *l*
((6 2 3) (7 5 6) (8 8 9))
*
Voici quelques exemples de McCLIM :
(mapc #'(lambda (child)
(transform-region (sheet-transformation child)
(sheet-region child)))
(cons child (sheet-occluding-sheets sheet child)))
(mapc #'(lambda (inherited-command-table)
(apply-with-command-table-inheritance
fun (find-command-table inherited-command-table)))
(command-table-inherit-from command-table))
Irene DURAND
2011-10-14