Ббк 32. 973-018 г рецензент канд физ мат наук, Ф. А. Мурзин


Download 278.16 Kb.
bet43/68
Sana12.10.2023
Hajmi278.16 Kb.
#1700499
TuriКурс лекций
1   ...   39   40   41   42   43   44   45   46   ...   68
Bog'liq
FIT-Gor-PP3

Пример 27. Выбор ветви

Определение

Примечание

(DEFUN evlis (m a) (COND
( m
(cons(evel (car m) a)

(evlis(cdr m) a)


) )
) )

Пока «M» не пуст, присоединяем значение его первого элемента
к списку значений остальных элементов

Пример 28. Вычисление параметров



    1. Функциональная модель взаимодействия монад

Примерно то же самое обеспечивают EVAL-P и APPLY-P, рассчитанные на использование списков свойств атома для хранения постоянных значений и функциональных определений. Индикатор MONAD указывает в списке свойств атома на правило интерпретации функций, относящихся к отдельной монаде, MACRO – на частный метод построения представления функции. Функция VALUE реализует методы поиска текущего значения переменной в зависимости от контекста и свойств атомов.



Определение

Примечание

(DEFUN EVAL-P (E C)
(COND ((ATOM E) (VALUE E C))
((ATOM (CAR E))(COND ((GET (CAR E) 'MONA
((GET (CAR E) ' MONAD) (CDR E) C) )
(T (APPLY-P (CAR E)(EVLIS (CDR E) C) C))
) )
(T (APPLY-P (CAR E)(EVLIS (CDR E) C) C))
))

D До применения функции выясняем еѐ категорию

Пример 29. Функции разных категорий

Определение

Примечание

(DEFUN APPLY-P (F ARGS C)




(COND ((ATOM F)(APPLY-P (FUNCTION F C) ARGS




C))

Для макрофункций нет

((ATOM (CAR F))(COND ((GET (CAR F) 'MACRO)

необходимости в

(APPLY-P ((GET (CAR F) 'MACRO)

вычислении

(CDR F) C) ARGS C))

аргументов

(T (APPLY-P (EVAL F E) ARGS C))




) )




(T (APPLY-P (EVAL F E) ARGS C))




))




Пример 30. Специальные макрофункции поддерживают пост-вычисления параметров
Или то же самое с вынесением общих подвыражений во вспомогательные параметры.


Определение

Примечание

(DEFUN EVAL-P (E C)




(COND ((ATOM E) (VALUE E C))




((ATOM (CAR E))




((LAMBDA (V) (COND (V (V(CDR E) C) )

Однократный поиск

(T (APPLY-P (CAR E)(EVLIS (CDR E) C) C))

категории

)) (GET (CAR E) ' MONAD) ) )




(T (APPLY-P (CAR E)(EVLIS (CDR E) C) C))




))




Пример 31. Исключение лишнего поиска свойства MONAD


Определение

Примечание

(DEFUN APPLY-P (F ARGS C)




(COND ((ATOM F)(APPLY-P (FUNCTION F C) ARGS C))




((ATOM (CAR F))




((LAMBDA (V) (COND (V (APPLY-P (V (CDR F)

Однократный

C) ARGS C))

поиск свойства

(T (APPLY-P (EVAL F E) ARGS C))




))(GET (CAR F) 'MACRO) ))




(T (APPLY-P (EVAL F E) ARGS C))




))




Пример 32. Исключение лишнего поиска свойства MACRO
Расширение системы программирования при таком определении интерпретации осуществляется простым введением/удалением соответствующих свойств атомов и функций.
Полученная схема интерпретации допускает разнообразные категории функций, реализуемые как отдельные монады, и макросредства конструирования функций, позволяет задавать различные механизмы передачи параметров функциям. Так, в языке Clisp различают кроме обычных, обязательных и позиционных ещѐ и необязательные (факультативные), ключевые и серийные (многократные, с переменным числом значений) параметры.
При разработке и отладке программ происходит развитие средств и методов обработки данных, что приводит к изменению типов представления объектов. Объекты из неопределенных становятся константами или переменными, из обработки скаляров формируется обработка структур данных, от структур данных вероятен переход к функциям и файлам и т. п.
Не менее существенное развитие происходит и на уровне постановки задачи. Задача из новой, решение которой имеет ранг пробы или демонстрации, становится направлением исследования, в котором созревают практичные или точные подзадачи, возможен и переход к поиску решений на пределе возможностей оборудования. Требования к средствам и методам решения задач на столь различных уровнях изученности привели к гибкости, присущей парадигме функционального программирования.



Определение

Примечание

(DEFUN eval(e a) (COND
( (atom e) (cdr(assoc e a)) )
( (eq (car e) 'QUOTE) (cadr e))
( (eq(car e) 'COND) (evcon(cdr e) a))
( T (apply (car e) (evlis(cdr e) a) a) )) )

(DEFUN apply (fn x a) (COND


((atom fn)(cond
((eq fn 'CAR) (caar x))
((eq fn 'CDR) (cdar x))
((eq fn 'CONS) (cons (car x)(cadr x)) )
((eq fn 'ATOM) (atom (car x)) )
((eq fn 'EQ) (eq (car x)(cadr x)) )
(T (apply (eval fn a) x a)) ) )
)

Переменная Константа Ветвление Применение функции.


Элементарные функции


Программируемые




((eq(car fn)'LAMBDA) (eval (caddr fn)
(pairlis (cadr fn) x a) )) ((eq (car fn) 'LABEL) (apply (caddr fn) x
(cons (cons (cadr fn)(caddr fn)) a)))))

(DEFUN evcon (c a) (COND


((eval (car c) a) (eval (cadr c) a) )
( T (eval (caddr c) a) ) ))

(DEFUN evlis (m a) (COND


((null m) Nil )
( T (cons(eval (car m) a)
(evlis(cdr m) a) ))
)

функции Безымянная функция Именованная функция

Выбор ветви


Вычисление параметров



Пример 33. Самоописание Lisp-интерпретатора, предложенное Дж. Маккарти в начале 1960-х годов

Наиболее очевидные следствия из выбранных принципов ФП:



  • процесс разработки программ разбивается на фазы: построение базиса и его пошаговое расширение;

  • рассмотрение программы как реализации алгоритма естественно дополняется табличной реализацией функций, т. е. допустимо использование хранимых графиков функций в виде структур из аргументов и соответствующих результатов наряду с процедурами;

  • прозрачность ссылок обеспечена совпадением значений одинаково выглядящих формул, вычисляемых в одинаковом контексте;

  • предпочтение универсальных функций и функционально полных систем, трудоемкость первичной реализации которых компенсируется надежностью определений и простотой применения.

Язык программирования Lisp и сложившееся на его основе функциональное программирование реально показали свои сильные стороны как инструментарий исследования и освоения новых областей применения вычислительной техники. Это аргумент в пользу функционального подхода к решению новых сложных задач:



  • доступны преобразования программ и процессов;

  • осуществима лингвистическая обработка информации;

  • поддерживается гибкое управление базами данных;

  • возможна оптимизация информационных систем, вплоть до полного исключения потерь информации;

  • моделирование общения.

    1. Спецификация

Таблица 32




Download 278.16 Kb.

Do'stlaringiz bilan baham:
1   ...   39   40   41   42   43   44   45   46   ...   68




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling