Зворотний зв'язок

Основи мови програмування Лісп

Функція PSETQ ідентична до функції SETQ за винятком того, що всі форми оцінюються до того, як будуть здійснені будь-які заміни. Проілюструємо це на прикладі. Значення символа 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

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

(SET ‘car ‘road)Val(car) = roadVal(road) = road

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

(SET ‘car car)Val(car) = roadVal(road) = flowerVal(flower) = flower

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

(SET ‘road 4)Val(car) = roadVal(road) = 4Val(flower) = road

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

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

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

4. Визначення функцій в Ліспі

Поряд з примітивними функціями можуть існувати функції, визначені користувачем. Функція викликається набором аргументів і повертає єдине значення. Визначення функції в Ліспі має наступний вигляд:

(DEFUN name (arg1 arg2 ...)

task1

task 2

. . . . . )

де name — ім’я функції, arg1, arg2, ... — аргументи (параметри). Тіло функції містить послідовність задач. Ключове слово DEFUN виникло з DEfine FUNction.

$ (DEFUN FIRST (lst)$ (FIRST ‘(q w e r t y))


Реферати!

У нас ви зможете знайти і ознайомитися з рефератами на будь-яку тему.







Не знайшли потрібний реферат ?

Замовте написання реферату на потрібну Вам тему

Замовити реферат