Основи мови програмування Лісп
NILNILNILNIL
За допомогою функцій CAR, CDR можна знаходити за даним списком будь-який його підсписок або атом. Дозволяється використовувати функції, які є комбінаціями CAR та CDR. Імена таких функцій починаються на C і закінчуються на R, а між ними знаходиться послідовність літер A та D (але не більше 4 літер у реалізації інтерпретатора muLisp), яка вказує шлях обчислення.
$ (CAR (CDR (CDR ‘(q w e r t y))))
$ (CADDR ‘(q w e r t y))
e
$ (CAR(CDR (CDR ‘((q 1) (w 2) (e 3)))))
$ (CADDR ‘((q 1) (w 2) (e 3)))
(e 3)
$ (CDR (CDR ‘((q 1) (w 2) (e 3))))$ (CAR (CAR ‘((q w))))
$ (CDDR ‘((q 1) (w 2) (e 3)))$ (CAAR ‘((q w)))
((e 3))q
Функція конструктора CONS використовується для додання об’єкту до заданого списку. Об’єкт який додається, стає головою списку. Якщо другий аргумент не задано, то він вважається рівним NIL.
$ (CONS ‘(q w) ‘(r (t y))) $ (CONS apple ‘(q w))
((q w) r (t y)) (apple q w)
$ (CONS ‘(q w) ‘(r t y)) $ (CONS 5)
((q w) r t y)(5)
Зазначимо, що якщо результатом обчислення виразу (CONS object list) буде new, то результатом (CAR new) буде object, а результатом (CDR new) буде list, тобто
(CAR (CONS object list)) = object,
(CDR (CONS object list>)) = list.
$ (CAR (CONS ‘(q w) ‘(r (t y))))$ (CAR (CONS apple NIL))
(q w) apple
Функцією порівняння є EQL. Вона порівнює значення першого та другого аргумента, які обов’язково повинні бути атомами, та повертає значення істини (Т) або хибності (NIL).
$ (EQL ‘qw ‘qw)$ (EQL (CAR ‘(q w)) q)