mapcar

Comme mapc, mapcar applique son premier argument aux éléments de la liste. La différence est que mapcar renvoie une liste des résultats des applications, c'est-à-dire que le ième élément de la liste renvoyée est la valeur de la fonction appliquée au ième élément de la liste.

Grâce à la valeur de retour, mapcar est souvent utilisée avec des fonctions sans effet de bord. Exemples :

* (mapcar #'1+ '(1 2 3 4))

(2 3 4 5)
* (let ((x (random 23)))
    (mapcar #'(lambda (y) (* x y))
            '(1 2 3 4)))

(21 42 63 84)
* (mapcar #'car '((a b c) (d e f) (g h i)))

(A D G)
* (mapcar #'oddp '(34 2 55 6 75 94 73 41 11 44 38))

(NIL NIL T NIL T NIL T T T NIL NIL)
*

Voici quelques exemples de McCLIM :

(make-polygon (mapcar (lambda (p) (transform-region transformation p))
                      (polygon-points rect)))


(make-standard-rectangle-set
  (mapcar (lambda (band)
            (cons (nth-value 1 (transform-position tr 0 (car band)))
                  (mapcar (lambda (x)
                            (nth-value 0 (transform-position tr x 0)))
                          (cdr band))))
          (standard-rectangle-set-bands self)))

Irene DURAND
2011-10-14