Примітивні об’єкти даних
$ (SETQ |sym(bol| 3)$ (SETQ a |q w e|)$ s\a$ s\\a
$ |sym(bol|$ asa|s\\a||
3 |q w e|
$ (SETQ *PRINT-ESCAPE* NIL)$ (SETQ a |q w e|)$ (SETQ "s\\a" 2)
$ s\\a$ a$ |s\\a|
s\aq w e2
Число є іншим примітивним об’єктом. Воно може бути цілим або дробовим. Ціле число вводиться як послідовність цифр, перед якою може стояти знак мінус. За внутрішнім поданням цілі числа діляться на малі цілі (до 65536) та великі цілі. Оскільки значенням числа завжди є саме число, то немає необхідності перед ним ставити апостроф. Чотири атрибути характеризують число як об’єкт даних:
— елемент тотожності. Це є вказівник на саме число. Він доступний як CAR-елемент числа.
— знак. Він містить один з наступних символів, які характеризують тип числа:
додатневід’ємне$ (CDR 5.6)$ (CAR 5.6)
малеNILTMACRO5.6
великеLAMBDANLAMBDA$ (CDR 1212)$ (CDR -121212)
дробовеMACROSPECIALNILNLAMBDA
Значення атрибута знака доступне як CDR-елемент числа.
— довжина. Якщо число є малим цілим, то цей атрибут містить значення цілого. Якщо число — велике ціле, то елемент ‘довжина’ містить довжину слова вектора числа. Якщо число дробове — елемент містить вказівник на його чисельник, який обов’язково повинен бути цілим (додатним або від’ємним).
— вектор. Якщо число мале ціле, то значення атрибута є вказівником на інше мале ціле (хеш-з’єднувач). Якщо число велике ціле, то це поле містить вказівник на найменший значущий байт. Якщо число дробове — елемент містить вказівник на його знаменник, який повинен бути додатним цілим числом.
Функція порівняння EQL може використовуватися для порівняння чисел. Але більш загальною функцією для порівняння множини чисел є рівність:$ (EQL -3 4)$ (EQL 4 4)$ (= 2 2 2)$ (= 2 2 3 2)
NILTTNIL
Дробові числа можуть подаватися у десятковому вигляді та з дробовою рискою. Внутрішня змінна *PRINT-POINT* відповідає за тип виведення дробових чисел. Якщо вона дорівнює NIL, то всі дробові числа подаються на виведення з дробовою рискою. Якщо *PRINT-POINT* = n, то дробові числа виводяться з n знаками після десяткової коми. При введенні дробового числа воно автоматично скорочується.
$ 3/4$ 3/9$ 5/1$ 12/9
3/41/354/3