Введение в программирование на Лиспе



             

Специальные функции


  1. Константа представляется как аргумент специальной функции QUOTE в виде списка:

(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)

Упражнение. Запишите выражения, соответствующие применению функций из вышеприведенных определений.

  1. Построить функцию можно с помощью Lambda-конструктора:

(LAMBDA (x) (CAR (CDR (CDR x))) ) | |_____________________|_____определение функции | ___________________________ параметр функции

Пример 4.8.

(html, txt)

При вызове такой безымянной функции заодно происходит задание значений параметров - связанных переменных:

((LAMBDA (x) (atom x)) 123) ; = T

X получит значение 123 на время применения построенной безымянной функции, действие которой заключается в выяснении, атом ли аргумент функции.




Содержание    Вперед