(QUOTE (C O N S T ))
Пример 4.5. Список из атомов объявлен константой (html, txt)
Используется и сокращенная запись – апостроф перед произвольным данным.
'(C O N S T )
Пример 4.6.
(html, txt)
В зависимости от контекста одни и те же объекты могут выполнять роль переменных или констант, причем значения и того, и другого могут быть произвольной сложности. Если объект выполняет роль константы, то для объявления константы достаточно заблокировать его вычисление, то есть как бы взять его в кавычки (quotation), выделяющие буквальное использование фраз, не требующее обработки. Для такой блокировки вводится специальная унарная функция QUOTE, предохраняющая свой аргумент от вычисления.
(QUOTE A) | Константа A объявлена. |
(QUOTE (A B C) ) | Константа (A B C) объявлена. |
(ATOM (QUOTE A)) = T | Аргументом предиката "ATOM" является константа – атом "А" |
(ATOM (QUOTE (A B C) )) = Nil | Аргументом предиката является константа - список (A B C) |
(ATOM A) | Аргументом предиката "ATOM" является переменная – атом "А". Значение предиката не определено - оно зависит от вхождения переменной A, а ее значение зависит от контекста и должно быть определено или задано до попытки выяснить атом ли это. |
(третий (QUOTE (A B C))) | Применение новой функции к значению, не требующему вычисления, - константа (A B C). |
Пример 4.7.
(html, txt)
Упражнение. Запишите выражения, соответствующие применению функций из вышеприведенных определений.
(LAMBDA (x) (CAR (CDR (CDR x))) ) | |_____________________|_____определение функции | ___________________________ параметр функции
Пример 4.8.
(html, txt)
При вызове такой безымянной функции заодно происходит задание значений параметров - связанных переменных:
((LAMBDA (x) (atom x)) 123) ; = T
X получит значение 123 на время применения построенной безымянной функции, действие которой заключается в выяснении, атом ли аргумент функции.