Засоби та принципи програмування на Ліспі, Детальна інформація
Засоби та принципи програмування на Ліспі
Реферат на тему:
Засоби та принципи програмування на Ліспі
1. Контрольні конструкції
MuLisp використовує неявну форму PROGN для обчислення форм, які складають тіло функції. Окрім того, інтерпретатор muLіsp розпізнає в тілі функції неявні COND конструкції. Неявні COND-и роблять визначення функцій читабельними, короткими та ефективними. Спеціальні форми забезпечують контроль за обчисленням форм в процесі виконання програм. Розглянемо деякі контрольні інструкції.
1. QUOTE <об’єкт> повертає об’єкт без його обчислення. QUOTE може використовуватися для запобігання обчислення значень констант, які передаються як аргумент функції, що обчислюється.
$ (SETQ a 125)
$ a $ (QUOTE a) $ (CAR (CONS 4 7)) $ (CAR ‘(CONS 4 7))
125 a 4 CONS
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
(w e r t y)
7. COND ... Обчислює CAR кожної COND форми доти, доки не зустрінеться деяке значення, відмінне від NIL, або доки всі предикати не будуть обчислені. В першому випадку COND обчислює CDR елемент cons - форми з предикатом, який не дорівнює NIL, як тіло функції, використовуючи неявну функцію PROGN. Якщо CDR - елемент COND форми, яка не дорівнює NIL, є порожнім, то повертається значення предиката. Якщо обчислені всі предикати та всі вони повернули NIL, то COND повертає NIL.
8. COMMENT <коментар> Ігнорує свої аргументи та повертає NIL. Визначає засіб включення коментарів безпосередньо у визначені функції.
9. RETURN <об’єкт> Зупиняє виконання функції, яка містить RETURN, звільняє стек та повертає об’єкт в ролі свого значення.
10. RESTART Закриває всі відкриті файли, відмовляється від поточного середовища та ініціює нову систему muLisp. Всі зв’язки між змінними, функції користувача та значення властивостей поточного середовища знищуються.
11. SYSTEM Закриває всі відкриті файли, завершує виконання muLisp та повертає керування операційній системі.
Засоби та принципи програмування на Ліспі
1. Контрольні конструкції
MuLisp використовує неявну форму PROGN для обчислення форм, які складають тіло функції. Окрім того, інтерпретатор muLіsp розпізнає в тілі функції неявні COND конструкції. Неявні COND-и роблять визначення функцій читабельними, короткими та ефективними. Спеціальні форми забезпечують контроль за обчисленням форм в процесі виконання програм. Розглянемо деякі контрольні інструкції.
1. QUOTE <об’єкт> повертає об’єкт
$ (SETQ a 125)
$ a $ (QUOTE a) $ (CAR (CONS 4 7)) $ (CAR ‘(CONS 4 7))
125 a 4 CONS
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
(w e r t y)
7. COND
8. COMMENT <коментар> Ігнорує свої аргументи та повертає NIL. Визначає засіб включення коментарів безпосередньо у визначені функції.
9. RETURN <об’єкт> Зупиняє виконання функції, яка містить RETURN, звільняє стек та повертає об’єкт в ролі свого значення.
10. RESTART Закриває всі відкриті файли, відмовляється від поточного середовища та ініціює нову систему muLisp. Всі зв’язки між змінними, функції користувача та значення властивостей поточного середовища знищуються.
11. SYSTEM Закриває всі відкриті файли, завершує виконання muLisp та повертає керування операційній системі.
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021