La fonction mapl est différente des trois précédentes car elle applique son premier argument non pas à chaque élément de la liste, mais à chaque sous-liste de la liste. La fonction est donc d'abord appliquée à la liste entière, puis au cdr de cette liste, puis au cddr, etc. Comme avec mapc, c'est la liste passée en argument qui est renvoyée. Exemples :
* (let ((total-length 0))
(mapl #'(lambda (l) (incf total-length (length l)))
'(a b c d e))
total-length)
15
* (defparameter *l* (list 1 2 3 4))
*L*
* (mapl #'(lambda (l) (incf (car l)))
*l*)
(2 3 4 5)
* *l*
(2 3 4 5)
*