Реферат: ЛИСП
4. Символы, свойства символов.
Функции присваивания: SET, SETQ, SETF.
Функция SET - присваивает символу или связывает с ним некоторое значение. Причем она вычисляет оба своих аргумента. Установленная связь действительна до конца работы, если этому имени не будет присвоено новое значение функцией SET.
_(SET ‘a ‘(b c d)) р (b c d)
_a р(b c d)
_(SET (CAR a) (CDR (o f g)) р (f g)
_a р (b c d)
_(CAR a) р b
_b р (f g)
Значение символа вычисляется с помощью специальной функции Symbol-value, которая возвращает в качестве значения значение своего аргумента.
_(Symbol-value (CAR a)) р (f g)
Функция SETQ - связывает имя, не вычисляя его. Эта функция отличается от SET тем, что вычисляет только второй аргумент.
_(SETQ d ‘(l m n)) р (l m n)
Функция SETF - обобщенная функция присваивания. SETF используется для занесения значения в ячейку памяти.
( SETF ячейка-памяти значение)
_(SETF ячейка ‘(a b c)) р (a b c)
_ ячейка р (a b c)
Переменная «ячейка» без апострофа указывает на ячейку памяти, куда помещается в качестве значения список (a b c).
Свойства символа.
В Лиспе с символом можно связать именованные свойства. Свойства символа записываются в хранимый вместе с символом список свойств. Свойство имеет имя и значение. Список свойств может быть пуст. Его можно изменять или удалять без ограничений.
(имя1 знач1 имя2 знач2 ... имяN значN )
Пусть имя студент имеет следующий список свойств:
(имя Иван отчество Иванович фамилия Иванов)
Функция GET - возвращает значение свойства, связанного с символом.
(GET символ свойство )
При отсутствии свойства функция GET возвращает NIL в качестве ответа.
_(GET ‘студент ‘имя) р Иван
_(GET ‘студент ‘группа) р NIL
Присваивание и удаление свойств.