المصفوفات نوع بيانات شائع جدًا في Common Lisp.
وهي مكوّنة من متتالية من خلايا cons.
كل car عنصر من عناصر المصفوفة، وكل cdr هو إما خلية cons التالية وإما ذرة تنهي المصفوفة.
المصفوفة التي تنتهي بالمصفوفة الفارغة تُسمّى "مصفوفة سليمة".
والمصفوفة التي تنتهي بذرة ليست المصفوفة الفارغة تُسمّى "مصفوفة منقّطة" (بحسب كيفية طباعتها: (cons 'a 'b) ;=> (a . b)).
ويمكن أيضًا أن تكون المصفوفة دائرية إذا كان cdr إحدى خلايا cons في المصفوفة خليةَ cons لاحقة.
على سبيل المثال: (let ((x (list 1))) (setf (cdr x) x) (write x :stream t :circle t) :done).
احترس عند التعامل مع المصفوفات الدائرية: إذا سمحت بطباعتها دون ربط *print-circle* بـ t، فسيؤدي ذلك إلى حلقة لا نهائية وسيُجمّد REPL (في هذا المثال، عند تمرير :circle t إلى write، سيُربط *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 لأن آثاره قد تكون مفاجئة.