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


ФУНКЦИИ - часть 2


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

 

 

 

 

 

<


Начало  Назад  Вперед