Основы функционального программирования


Списки свойств атомов и структура списков


До сих пор атом рассматривался только как уникальный указатель, обеспечивающий быстрое выяснение различимости имен, названий или символов. В настоящем разделе описываются списки свойств, которые начинаются или находятся в указанных ячейках.

Каждый атом имеет список свойств. Когда атом читается (вводится) впервые, тогда для него создается пустой список свойств, который потом можно заполнять. Список свойств устроен как специальная структура, подобная записям в Паскале, но указатели в такой записи сопровождаются тэгами, символизирующими тип хранимой информации. Первый элемент этой структуры расположен по адресу, который задан в указателе. Остальные элементы доступны по этому же указателю с помощью ряда специальных функций. Элементы структуры содержат различные свойства атома. Каждое свойство помечается атомом, называемым индикатором, или расположено в фиксированном поле структуры.

В первых реализациях Лиспа все системные свойства объектов располагались по единой схеме. Перечислим некоторые из индикаторов таких свойств.

  • PNAME — печатное имя атома для нужд ввода-вывода.

  • EXPR — S-выражение, определяющее функцию с именем атом, в списке свойств которого встречается EXPR.

  • SUBR — функция, определенная подпрограммой на машинном языке.

  • APVAL — постоянное значение атома, рассматриваемого как переменная.

В списке свойств атома NIL было два индикатора, PNAME и APVAL, со значением NIL.

Более детально диаграммы списков свойств приведены в описании Lisp 1.5. [1 (не найдено)].

Здесь достаточно принять к сведению, что реализация атомарных объектов — это сложная структура данных, в свою очередь представленная списками.

С помощью функции get в форме (get x i) можно найти для атома x свойство, индикатор которого равен i.

Значением (get ‘FF ‘EXPR) будет (LAMBDA (X) (COND ... )), если определение FF было предварительно задано с помощью (defun FF (X)( COND ... ).

Свойство с его индикатором может быть вычеркнуто - удалено из списка функцией remprop в форме (remprop x i).

С середины 70-х годов возникла тенденция повышать эффективность разработкой специальных структур, отличающихся в разных реализациях.


- Начало -  - Назад -  - Вперед -



Книжный магазин