मैपिंग का अर्थ है किसी सीक्वेंस के हर एलिमेंट पर एक फंक्शन लागू करके नया सीक्वेंस बनाना।
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 के इस्तेमाल से सपाट कर दिया जाता है। nconc append की तरह है, लेकिन अपने अंतिम आर्गुमेंट को छोड़कर बाकी सबको नष्ट कर देता है।
मैपिंग केवल ऐरे तक सीमित नहीं है। किसी भी सीक्वेंस पर मैपिंग की जा सकती है (जिसे किसी अन्य अवधारणा में समझाया गया है)।
ऐरे के अलावा दूसरे सीक्वेंसों के मामले में map फंक्शन इस्तेमाल किया जाता है।
map तीन या उससे अधिक आर्गुमेंट लेता है:
(map 'list #'double '(1 2 3)) ; => (2 4 6)
(map 'string #'char-upcase "foobar") ; => "FOOBAR"
एक विशेष मामले में, अगर परिणामी सीक्वेंस टाइप के रूप में nil दिया जाए, तो nil लौटाया जाता है।
इसका इस्तेमाल (ऊपर mapc और mapl की तरह) साइड-इफेक्ट के लिए किया जाता है।