La fonction mapcan est similaire à mapcar et mapc. Elle applique la fonction à chaque élément de la liste, puis la fonction nconc (voir section 8.5.4) aux résultats de ces applications. Normalement, le résultat de chaque application est une liste et ces listes sont concaténées desctructivement pour obtenir la valeur de l'appel à mapcan. Exemple :
* (defparameter *l* (list (list 1 2) (list 3 4) (list 5 6)))
*L*
* (mapcan #'cdr *l*)
(2 4 6)
* *l*
((1 2 4 6) (3 4 6) (5 6))
*
Ce résultat nécessite une explication. La figure 8.8 présente la structure initiale de *l* passée à mapcan.
Les trois valeurs obtenues après application de cdr sur chaque élément de *l* sont indiquées dans la figure 8.9.
La figure 8.10 montre la même structure que la figure 8.9, sauf que les cellules ont été réorganisées pour mettre en évidence les trois listes (chacune d'un seul élément) obtenues après application de cdr sur chaque élément de *l*.
La figure 8.11 montre le résultat de la concaténation de ces trois listes avec mapcan. Il est maintenant clair que le premier élément de *l* est désormais la liste (1 2 4 6), le deuxième est la liste (3 4 6) et le dernier est la liste (5 6).