Информатика -продвинутый курс


         

Определение функции задается списком, поэтому


(defun sumsquare (х у) (+ (* х х) (* у у))) .

Результат: sumsquare.

Вызов (применение) этой функции:

(sumsquare 34)

Результат: 25.

Определение функции задается списком, поэтому его можно модифицировать в ходе выполнения программы. Кроме того, некоторый символ может быть и именем функции и переменной.

В Лиспе передача параметров происходит по значению. Формальные параметры функций являются статическими и локальными, т.е. действительны только внутри той формы, в которой они определены.

Основу для построения различных функций образует набор небольшого числа примитивных встроенных функций. Базовыми функциями обработки S-выражений являются функции

CAR, CDR, CONS, ATOM, EQ, EQL, =

и другие, смысл которых отражен в табл. 3.7.

Таблица 3.7

Базовые функции обработки S-выражений

















































































































































































































































































































































































































Функция

 



Вызов

 



Действие

 



Пример использования

 



CAR



(CAR список)



Возвращает головною часть



(CAR(1 234))







списка - его 1-й элемент



Результат:1



CDR



(CDR список)



Возвращает хвостовую часть



(CDR(! 234))







списка- все. кроме 1-го элемента



Результат:(2 3 4)



CONS



(CONS S-выра-



Строит список из переданных в



(CONS I (2 3 4))





жение список)



качестве аргументов головы и хвоста



Результат: (1234)



ATOM



(ATOMS-выра-



Предикат; проверяет, является ли



(ATOM A) : t





жение)



аргумент атомом, и возвращает либо t



(ATOM (1 2 3)): Nil







(истина), либо Nil или ("(ложь)





EQ



(EQ символ



Предикат: проверяет тождественность



(EQ A A): t





символ)



символов-аргументов, неприменим



(EQ X (CAR (X Y Z))): t







для чисел





EQL



(EQL число



Предикат, проверяет тождественность



(EQL 3.0 3.0): t





число)



чисел одного типа





=



(= число



Предикат, проверяет тождественность







число)



чисел различных типов



(=30.3el):t



EQUAL



(EQUAL число



Аналогична EQL,



(EQUAL(xyz)(xyz)):t





или список



но, кроме того, проверяет идентичность







число или список)



Списков





EQUALP



(EQUALP



Проверка наиболее общего равенства







объект объект)







NULL



(NULL список)



Проверка, является ли аргумент









пустым списком





NOT



(NOT логическая



Логическое отрицание







величина)







NTH



(NTH n список)



Выделение n-го элемента списка



(NTH 2 (1 2 3)): 3









(индексы начинаются с 0)



FIRST





Предикаты, выделяющие





SECOND





Соответствующие элементы списка





LAST









LIST



(LIST apr



Строит из аргументов список



(LIST a b (с)): (a b c)





арг2 ...)





<

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