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

Засоби та принципи програмування на Ліспі

1. Контрольні конструкції

MuLisp використовує неявну форму PROGN для обчислення форм, які складають тіло функції. Окрім того, інтерпретатор muLіsp розпізнає в тілі функції неявні COND конструкції. Неявні COND-и роблять визначення функцій читабельними, короткими та ефективними. Спеціальні форми забезпечують контроль за обчисленням форм в процесі виконання програм. Розглянемо деякі контрольні інструкції.

1. QUOTE <об’єкт> повертає об’єкт без його обчислення. QUOTE може використовуватися для запобігання обчислення значень констант, які передаються як аргумент функції, що обчислюється.

$ (SETQ a 125)

$ a$ (QUOTE a)$ (CAR (CONS 4 7))$ (CAR ‘(CONS 4 7))

125a4CONS

2. LOOP <форма1> <форма2> ... <формаN> Повторно обчислює форми у послідовному порядку доти, поки не зустрінеться неявний COND з предикатом, не рівним NIL. Розглянемо функцію LENGTH обчислення довжини списку. В першому стовпчику запропоновано рекурсивний, в лівому — нерекурсивний варіант програми.

(DEFUN LENGTHr (lst)(DEFUN LENGTH (lst)

((NULL lst) 0)(SETQ ct 0)

(+ 1 (LENGTHr (CDR lst))) )(LOOP

((NULL lst) ct)

(SETQ lst (CDR lst) ct (+ 1 ct)) ) )

3. IF <предикат> [THEN] <форма1> [ELSE] <форма2> Якщо значення предиката не дорівнює NIL, то видається [THEN] форма, інакше видається [ELSE] форма.

$ (IF (EQL ‘r ‘r)(CAR ‘(q w e r t y)) (CDR ‘(q w e r t y))) — q

$ (IF (EQL ‘r ‘w)(CAR ‘(q w e r t y)) (CDR ‘(q w e r t y))) — (w e r t y)

4. IDENTITY <об’єкт> Повертає об’єкт без жодних змін. Ця функція застосовується для використання змінних як предикатів в умовних виразах.

5. PROGN <форма1> <форма2> ... <формаN> Послідовно обчислює форми та повертає результат обчислення формиN.

6. PROG1 <форма1> <форма2> ... <формаN> Послідовно обчислює форми та повертає результат обчислення форми1. Функцію використовують для того, щоб вводити допоміжні змінні для збереження результатів в процесі обчислення інших виразів.

$ (SETQ a ‘(q w e r t y))

$ (PROG1 (CAR a) (SETQ a (CDR a)))

q

$ a


Реферати!

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







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

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

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