लिस्ट Common Lisp में एक बहुत आम डेटा टाइप है।
ये कॉन्स सेलों के एक क्रम से बनी होती हैं।
हर car लिस्ट का एक एलिमेंट होता है, और हर cdr या तो अगला कॉन्स सेल होता है या अंत में आने वाला एटम होता है।
जो लिस्ट खाली लिस्ट पर समाप्त होती है, उसे "प्रॉपर लिस्ट" कहते हैं।
जो लिस्ट ऐसे एटम पर समाप्त होती है जो खाली लिस्ट नहीं है, उसे "डॉटेड लिस्ट" कहते हैं (यह नाम इस बात पर आधारित है कि वह कैसे प्रिंट होती है: (cons 'a 'b) ;=> (a . b)).
कोई लिस्ट वृत्ताकार भी हो सकती है, अगर लिस्ट के किसी कॉन्स सेल का cdr किसी बाद वाले कॉन्स सेल की ओर इशारा करता हो।
उदाहरण के लिए: (let ((x (list 1))) (setf (cdr x) x) (write x :stream t :circle t) :done).
वृत्ताकार लिस्टों के साथ काम करते समय ध्यान रखिए, क्योंकि *print-circle* को t से बाँधे बिना उन्हें प्रिंट करने देने से अनंत लूप बन जाता है और REPL अटक जाता है (इस उदाहरण में write को :circle t देने पर *print-circle t से बाँध दिया जाता है)।
आप append को किसी भी संख्या में लिस्टों के साथ कॉल कर सकते हैं, जिसमें 1 या 0 भी शामिल है:
(append '(a b c) '(1 2 3)) ; => (A B C 1 2 3)
(append '(a b c) '())) ; => (A B C)
(append '(a b c)) ; => (A B C)
(append) ; => ()
append के विकल्प के तौर पर nconc भी है, जो वही परिणाम देता है, लेकिन इसका साइड इफेक्ट यह है कि यह लिस्टों को बदल देता है। nconc का इस्तेमाल करते समय आपको सावधान रहना चाहिए, क्योंकि इसके परिणाम चौंकाने वाले हो सकते हैं।