- •Раздел 1
- •Раздел 2
- •2.1. Системные свойства символа (common lisp)
- •Функции для определения и модификации списка свойств символа (common lisp)
- •Область данных интерпретатора mulisp
- •2.3.1. Числа
- •2.3.2 Внутреннее представление символа
- •2.4. Организация ввода/вывода
- •3.1. Описание реляционной базы данных с помощью списка свойств символов (Common lisp)
- •Раздел 3
- •Раздел 3
- •Раздел 4
Функции для определения и модификации списка свойств символа (common lisp)
Список свойств представляет собой множество пар вида
<индикатор свойства> <значение свойства>
где индикатор свойства задает имя соответствующего свойства, ассоциированного с символом.
Чтение значения определенного свойства выполняет функция
(GET символ индикатор)
Присваивание значения определенного свойства некоторому символу производится с помощью обобщенной функции присваивания SETF.
(SETF (GET символ индикатор) значение)
Напомним, что обращение к SETF имеет вид
(SETF ячейка значение)
«Ячейку», или адрес, по которому записано значение определенного свойства, доставляет функция GET; она возвращает в качестве значения указатель на ячейку памяти для данного свойства.
Удаление некоторого свойства символа производится вместе со значением этого свойства при помощи обращения к функции
(REMPROP символ индикатор)
REMPROP возвращает в качестве значения имя (индикатор) удаляемого свойства, а если такого имени не было в списке свойств данного символа, то возвращается NIL.
Список свойств определенного символа можно прочитать целиком с помощью обращения:
(SYMBOL-PLIST символ)
Особенности обработки списка свойств символа в диалекте Common LISP сведены в приведенную ниже таблицу. Красным цветом в ней выделены поля с названиями системных свойств символа В каждой из остальных строк таблицы в первом слева столбце содержится название операции, которую можно выполнять для символа, проводя назначение или модификацию (если это возможно) значений соответствующих системных свойств. Если некоторая клетка содержит прочерк, это означает, что выполнить соответствующую этой клетке и данному системному свойству операцию невозможно. Например, прочитать печатное имя символа.
Табл. 2.1
Назначение |
SETQ |
SETQ |
SETQ (побочный эффект) |
DEFUN |
(SETF (GET символ индикатор) значение) |
|
Package |
name |
значение |
Определение функции
|
Список свойств |
Чтение |
|
|
SYMBOL- VALUE |
FUNCTION- VALUE |
(SYMBOL-PLIST символ) (GET символ индикатор) |
Если не определено |
|
|
NIL |
Undefined function |
NIL |
Область данных интерпретатора mulisp
Во время сеанса работы интерпретатора в выделенную область данных заносится информация о тех объектах программы, которые загружаются в эту область при чтении определенных файлов или формируются при выполнении программы либо в ходе диалога с пользователем.
Различают простые объекты области данных, которые имеют фиксированное число указателей, и сложные. К простым относятся символы, числа и списочные ячейки.
Указатели могут являться ссылками на другие объекты данных, то есть содержать их адреса, либо на структуры данных специального назначения – строка, двоичный вектор и тому подобное
Множество всех объектов данных образует связанную сеть указателей, называемую областью данных. Эта область замкнута в том смысле, что с помощью обращения к функциям CAR и CDR нельзя выйти за ее пределы.
Состояние рабочей области можно запомнить в определенном файле при обращении к функции
(SAVE <спецификация_файла> )
Тогда в случае необходимости это состояние можно использовать в другом сеансе общения с интерпретатором, если выполнить обращение к функции
(LOAD <спецификация_файла> )
