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


Дополнительные команды АМ для эффективной поддержки


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

Дополнительные команды АМ для эффективной поддержки отложенных выражений



Команда

Пояснение

LDE

Загрузка отложенного выражения с созданием рецепта

RPL

Замена рецепта его результатом

APN

Возобновление отложенного выражения

Вычисляться такими командами рецепт может не более чем один раз, и то если его результат действительно нужен.


Таблица 32




Дополнение АМ для эффективного выполнения отложенных действий


Команда

Результат

s e (LDE f . c) d

→ ([F (f . e)] . s) e c d

(x) e (RPL) ([F (F . e)] ee c . d)

→ (x . s) ee c d при этом ([F (F . e)] → [T x] 17

([T x] . s) e (APN . c) d

→ (x .s) e c d

([F (f . e)] . s) ee (APN . c) d

→ Nil e f ([F (F . e)] ee c . d)

Эффект отложенных вычислений можно продемонстрировать на обработке бесконечных структур данных, в которых продолжение структуры представлено как вычисление следующих элементов.





Фрагмент

Примечание

(def beg (LAMBDA (k lst) (cond ((EQ k Nil)())
(T (cons (car lst)
(beg (cdr k )
(eval (cons (cdr lst) Nil))

Вырезка начального отрезка





17 Включение в квадратные скобки «[ ]» здесь символизирует размещение по тому же адресу.



) ) )
) ) )
(def endless (LAMBDA (m) (cons m (lambda ()
(endless (cons m m)) ))
) )
(beg '(a b c) (endless 'A))
; = (A (A . A) ((A . A) A . A ))




Пример 24. Конструирование последовательности произвольной длины из бесконечного списка



    1. Свойства атомов

Методы расширения функциональных построений могут быть применены для моделирования привычного императивно-процедурного стиля программирования и техники работы с глобальными определениями. Здесь демонстрируется расширение базовой схемы обработки символьных выражений и представленных с их помощью функциональных форм на примере механизма списков свойств атомов. В результате можно собирать функционально полное определение гибкой и расширяемой реализации языка программирования, что и показано на примере Lisp-интерпретатора, написанном на Lisp-е.
До сих пор атом рассматривался только как уникальный указатель, обеспечивающий быстрое выяснение различимости имен, названий или символов. Теперь описываются списки свойств, которые начинаются или находятся в указанных ячейках.
Каждый атом имеет список свойств. Когда атом читается (вводится) впервые, тогда для него создается пустой список свойств, который потом можно заполнять. Список свойств устроен как специальная структура, подобная записям в Паскале, но указатели в такой записи сопровождаются тэгами, символизирующими тип хранимой информации. Первый элемент этой структуры расположен по адресу, который задан в указателе. Остальные элементы доступны по этому же указателю с помощью ряда специальных функций. Элементы структуры содержат различные свойства атома. Каждое свойство помечается атомом, называемым индикатором, или расположено в фиксированном поле структуры.
Здесь достаточно принять к сведению, что реализация атомарных объектов – это сложная структура данных, в свою очередь представленная списками.
С помощью функции GET в форме (GET x i) можно найти для атома x свойство, индикатор которого равен i.
Значением (GET 'FF 'EXPR) будет (LAMBDA (X) (COND ... )),
если определение FF было предварительно задано с помощью (DEFUN FF (X)( COND ... )).
Свойство с его индикатором может быть вычеркнуто – удалено из списка функцией REMPROP в форме (REMPROP x i).
С середины 70-х годов возникла тенденция повышать эффективность
разработкой специальных структур, отличающихся в разных реализациях. Существуют реализации, например, muLisp, допускающие работу с представлениями атома как с обычными списками посредством функций CAR, CDR.


    1. Download 278.16 Kb.

      Do'stlaringiz bilan baham:
1   ...   37   38   39   40   41   42   43   44   ...   68




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