mapc

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