У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


конструктора CONS використовується для додання об'єкту до заданого списку. Об'єкт який додається, стає головою списку. Якщо другий аргумент не задано, то вiн вважається рiвним NIL.

$ (CONS '(q w) '(r (t y))) $ (CONS apple '(q w)) $ (CONS '(q w) '(r t y)) $ (CONS 5)

((q w) r (t y)) (apple q w) ((q w) r t y) (5)

Якщо результатом виразу (CONS object list) буде new, то результатом (CAR new) буде object, а результатом (CDR new) буде list.

$ (CAR (CONS '(q w) '(r (t y)))) $ (CAR (CONS apple NIL))

(q w) apple

Функцiєю порiвняння є EQL. Вона порiвнює значення першого та другого аргумента, якi обов'язково повиннi бути атомами, та повертає значення iстини (Т) або хибностi (NIL).

$ (EQL 'qw 'qw) $ (EQL (CAR '(q w)) q) $ (EQL (CAR '(q,w) NIL)

T T F

При написаннi програм на Лiспi часто виникає запитання: чи є даний об'єкт атомом? Це питання вирiшує предикат ATOM. Вiн повертає Т, якщо об'єкт є атомом i NIL в iншому випадку. Порожнiй список NIL є атомом.

$ (ATOM qwerty) $ (ATOM '(q w e)) $ (ATOM '())

T F T

$ (ATOM '(q)) $ (ATOM 3)

F T

Функцiї призначення

Функцiї призначення застосовуються для надання значень програмним змiнним. До них вiдносяться:

1. (SET symbol object) - замiна символа об'єктом

2. (SETQ sym1 form1 sym2 form2 ... ) - спецiальна форма функцiї SET

3. (PSETQ sym1 form1 sym2 form2 ... ) - спецiальна форма функцiї SET

4. (POP symbol) - повертає вершину стека (списку)

5. (PUSH symbol form) - кладе символ symbol в стек (список) form.

Операцiя замiни значення символа здiйснюється за допомогою функцiї SET. Вона присвоює символу symbol значення object, або зв'язує symbol з object. Для скорочення замiсть SET ' пишуть SETQ (SET Quote). Як результат функцiя присвоєння повертає другий аргумент.

$ (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)

Функцiя SETQ дозволяє здiйснювати замiну значень декiльком символам в однiй командi: (SETQ a 1 b 2 c 3). При цьому змiни виконуються послiдовно злiва направо. Пiсля цього значенням символу a стане 1, b - 2, c - 3.

Функцiя PSETQ iдентична до функцiї SETQ за винятком того, що всi форми оцiнюються до того, як будуть здiйсненi будь-якi замiни. Проiлюструємо це на прикладi. Значення символа Sym позначатимемо через Val(Sym).

$ (SETQ w 1 e 2) Val(w)=1, Val(e)=2 $ (SETQ w 1 e 2) Val(w)=1, Val(e)=2

$ (SETQ w e e w) Val(w)=2, Val(e)=2 $ (PSETQ w e e w) Val(w)=2, Val(e)=1

При виконаннi операцiї замiни необхiдно розрiзняти символ та значення. При стартi системи mulLsp значенням кожного символа є вiн сам. Якщо ми введемо DOG, то i результатом буде DOG. Присвоїмо символовi DOG значення CAT: (SET 'DOG 'CAT). Результатом виразу (SET DOG 'HEN) буде HEN, але значення HEN ми присвоювали не символу DOG, а значенню символа DOG, тобто символу CAT. Значення символа DOG залишилося без змiни. Розглянемо результат наступних дiй:

(SET 'car 'road) Val(car) = road Val(road) = road

(SET car flower) Val(car) = road Val(road) = flower Val(flower) = flower

(SET 'car car) Val(car) = road Val(road) = flower Val(flower) = flower

(SET road car) Val(car) = road Val(road) = flower Val(flower) = road

(SET 'road 4) Val(car) = road Val(road) = 4 Val(flower) = road

(SET road 'hen) помилка, 4 не є символом i не може приймати iншi значення

POP повертає голову списка (вершину стека) i замiнює значення symbol на його хвiст. PUSH кладе в стек та змiнює його значення на збiльшений стек.

$ (SETQ a '(q w e r t)) Val(a) = (q w e r t)

$ (POP a) Val(a) = (w e r t)

$ (PUSH 'n a) Val(a) = (n w e r t)


Сторінки: 1 2