Примітивні об’єкти даних
Внутрішня змінна *PRINT-BASE* відповідає за основу системи числення, в якій обробляються числа. Якщо значення цієї змінної є цілим та перебуває в інтервалі від 2 до 32, то такою і буде основа системи числення, інакше muLisp працює в десятковій системі числення.
$ (SETQ ten 10)$ (SETQ *PRINT-BASE* 2)$ 234
$ (SETQ *PRINT-BASE* 16)$ ten11101010
$ ten1010
0A
Функцією, яка розпізнає цілі числа, є INTEGERP. Вона повертає Т, якщо її аргумент є цілим числом та NIL інакше. Функція NUMBERP розпізнає число.
$ (INTEGERP 100)$ (INTEGERP 3.5)
TNIL
$ (NUMBERP 3.5)$ (NUMBERP 4/5)
TT
Число в подвійних лапках завжди є символом:
$ (SYMBOLP "23")$ (NUMBERP "23")
TNIL
Символи та числа є атомами. Наступні вирази повертають істину: (ATOM 3.5), (ATOM "23"), (ATOM ‘APPLE).
Конс є примітивним об’єктом, який вказує на будь-які два інші об’єкти даних.. Він не є атомом. Назва конс пішла від функції конструктора CONS. Кожен конс склада- ється з CAR- та CDR- елементів. Конс часто називають точковою парою. Якщо X і Y об’єкти даних, то вираз (X . Y) є консом, CAR-елемент якого є X, а CDR-елемент – Y.
$ (SETQ A (cons X Y))$ (CAR A)$ (CDR A)$ (CDR ‘(R . S))
$ AXYS
(X . Y)
За допомогою точкового подання можна показати структуру будь-якого об’єкту. Список (x1 x2 x3) є ланцюгом консів, які зв’язані за допомогою CDR- елементів. Його CAR- елементи вказують на елементи списку. CDR- елемент останнього конса вказує на NIL. Вказаний список можна подати у вигляді (x1 . (x2 . (x3 . NIL))). Функція READ читання виразу розпізнає як точкове подання виразу, так і спискове. Функція виведення PRINT виводить об’єкти в списковому поданні.
$ (SETQ a ‘(q . (w . nil))$ a$ (CONSP ‘(q . w))$ (CONSP (q w))
(q w)(q w)TT
Функція (CONSP obj) розпізнає конси. Список не є примітивним об’єктом, а є ланцюгом консів. Отже, результатом застосування функції CONSP до списку буде Т.