Основи мови програмування Лісп
TT
$ (EQL (CAR ‘(q, w) NIL) $ (EQL nil ‘(nil))
NILNIL
При написанні програм на Ліспі часто виникає запитання: чи є даний об’єкт атомом? Це питання вирішує предикат ATOM. Він повертає Т, якщо об’єкт є атомом і NIL в іншому випадку. Порожній список NIL є атомом.
$ (ATOM qwerty)$ (ATOM ‘(q w e))$ (ATOM ‘())
TNILT$ (ATOM ‘(q))$ (ATOM 3)$ (ATOM ‘(NIL))
FTNIL
3. Функції призначення
Функції призначення застосовуються для надання значень програмним змінним. До них відносяться:
1. (SET symbol object)
— заміна символа об’єктом
2. (SETQ sym1 form1 sym2 form2 ... )
— спеціальна форма функції SET
3. (PSETQ sym1 form1 sym2 form2 ... )
— спеціальна форма функції SET
4. (POP symbol)
— повертає вершину стека (списку)
5. (PUSH symbol form)
— кладе символ symbol в стек (список) form.
Операція заміни значення символа здійснюється за допомогою функції SET. Вона присвоює символу symbol значення object, або зв’язує symbol з object. Для скорочення замість SET ‘ пишуть SETQ (SET Quote). Як результат функція присвоєння повертає другий аргумент.
$ (SET ‘fox ‘(a s d))$ (SETQ vowels ‘(a e i o u)))
$ (SETQ fox ‘(a s d))$ (SETQ vowels (CONS ‘y vowels))
(a s d)(y a e i o u)
Функція SETQ дозволяє здійснювати заміну значень декільком символам в одній команді: (SETQ a 1 b 2 c 3). При цьому зміни виконуються послідовно зліва направо. Після цього значенням символу a стане 1, b-2,c-3.