Η απεικόνιση αναφέρεται στην εφαρμογή μιας συνάρτησης σε κάθε στοιχείο μιας ακολουθίας, με σκοπό την παραγωγή μιας νέας ακολουθίας.
Η mapcar μπορεί να χρησιμοποιηθεί για να απεικονίσεις μια συνάρτηση πάνω σε μια λίστα αντικειμένων
(mapcar #'double '(1 2 3 4)) ; => (2 4 6 8)
Πρόσεξε ότι το πρώτο όρισμα είναι μια συνάρτηση που θα κληθεί.
Το #' είναι ειδική σύνταξη παράθεσης για να προσδιορίσεις μια συνάρτηση.
(Μπορείς να χρησιμοποιήσεις το 'double εδώ, αλλά η χρήση του #' είναι ιδιωματική και, κατά πολλούς, "πιο σωστή".)
Η απεικόνιση δεν περιορίζεται στην εφαρμογή μιας συνάρτησης σε μία μόνο ακολουθία, αλλά μπορεί να γίνει και με πολλαπλές ακολουθίες.
Αν δοθούν N ακολουθίες, τότε η συνάρτηση πρέπει να δέχεται N ορίσματα.
(mapcar #'list '(1 2) '(a b) '("foo" "bar")) ; => ((1 a "foo") (2 b "bar"))
Εκτός από τη mapcar, υπάρχουν και άλλες συναρτήσεις για απεικόνιση πάνω σε λίστες.
Η mapcar είναι σίγουρα η πιο συνηθισμένη, αλλά καλό είναι να ξέρεις και τις άλλες.
Η maplist λειτουργεί παρόμοια με τη mapcar, αλλά εφαρμόζεται σε διαδοχικές υπολίστες αντί για μεμονωμένα στοιχεία.
Πρώτα σε ολόκληρη τη λίστα, μετά στο cdr, μετά στο cdr αυτού κ.ο.κ.:
(maplist #'identity '(a b c)) ; => ((A B C) (B C) (C))
Οι mapc και mapl μοιάζουν με τις mapcar και maplist αντίστοιχα, αλλά δεν συλλέγουν τα αποτελέσματα και επιστρέφουν την πρώτη λίστα.
Χρησιμοποιούνται για πράξεις με παρενέργειες.
Οι mapcan και mapcon μοιάζουν με τις mapcar και maplist, αλλά το αποτέλεσμα ισοπεδώνεται με χρήση της nconc, η οποία μοιάζει με την append αλλά είναι καταστρεπτική για όλα τα ορίσματά της εκτός από το τελευταίο.
Η απεικόνιση δεν περιορίζεται στις λίστες. Πάνω σε οποιαδήποτε ακολουθία (την οποία καλύπτει άλλη έννοια) μπορεί να γίνει απεικόνιση.
Στην περίπτωση ακολουθιών που δεν είναι λίστες, χρησιμοποιείται η συνάρτηση map.
Η map δέχεται 3 ή περισσότερα ορίσματα:
(map 'list #'double '(1 2 3)) ; => (2 4 6)
(map 'string #'char-upcase "foobar") ; => "FOOBAR"
Ως ειδική περίπτωση, αν δοθεί το nil ως τύπος της ακολουθίας που θα προκύψει, τότε επιστρέφεται το nil.
Αυτό (όπως και οι mapc και mapl παραπάνω) χρησιμοποιείται για παρενέργειες.