Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по языку ЛИСП.doc
Скачиваний:
105
Добавлен:
28.06.2014
Размер:
210.94 Кб
Скачать

8.4 Функции сравнения

(EQUAL S1 S2)

Результат T, если S1 равно S2, иначе NIL

(EQUAL 'A 'A) --> T

(EQUAL '(A B C) '(A B C)) --> T

(EQUAL '(A B C '(C B A) ) NIL

(MEMBER S L)

Если S является элементом списка L, тогда значением функ-

ции будет часть списка L, начиная с первого вхождения S,

иначе NIL

(MEMDER 'A '(B C D)) --> NIL

(MEMBER 'A '(B A D)) --> (A D)

- 22 -

(= N1...Nn)

Результат Т, если N1=N2=N3...=Nn, иначе NIL

(= 5 9) --> NIL

(= 3 3.0) --> T

(/= N1...Nn)

Результат T, если N1 не= N2 и N2 не= N3 и т.д., иначе NIL

(/= 5 9) --> T

(/= 4 4 -7) --> NIL

(/= 3 3.0) --> NIL

(/= 6 2 6) --> T

(< N1...Nn)

Результат Т, если N1<N2 и N2<N3 и т .д., иначе NIL

(< 5 9) --> T

(< 4 -7) --> NIL

(< 3 3.0) --> NIL

(> N1...Nn)

Результат T, если N1>N2 иN2>N3 и т.д., иначе NIL

(> 5 9) --> NIL

(> 4 -7) --> T

(> 3 3.0) --> NIL

(<= N1...Nn)

Результаты T, если N1<=N2 и N2<=N3 и т.д., иначе NIL

(<= 5 9) --> T

(<= 4 -7) --> NIL

(<= 3 3.0) --> T

(>= N1...Nn)

Результат T, если N1>=N2 и N2>=N3 и т.д., иначе NIL

(>= 5 9) --> NIL

(>= 4 -7) --> T

(>= 3 3.0) --> T

8.5 Логические функции

- 23 -

(NOT S) - логическое отрицание.

NOT - возвращает Т, если S имеет значение NIL иначе NIL

(NOT NIL) --> T

(NOT 'FOO) --> NIL

(NOT (EQUAL 'DOG 'CAT)) --> T

(AND S1...S2) - конъюнкция.

AND слева направо вычисляет значения S1...Sn и возвращает

значение T, если все аргументы неNIL, иначе вычисление

проводится до первого NIL и возвращается NIL

(AND (EQ 'DOG 'CAT) (< 2 3)) --> NIL

(AND (EQ 'DOG 'DOG) (< 2 3)) --> T

(OR S1...S2) - дизъюнкция.

Вычисляются аргументы S1...Sn слева направо, пока не бу-

дет получен результат, отличный от NIL, он и будет ре-

зультатом работы OR.Если все результаты NIL, тогда функ-

ция OR возвращает NIL

(OR (EQ 'DOG 'CAT) (< 2 3)) --> T

(OR (EQ 'DOG 'CAT) (< 3 2)) --> NIL

8.6 Функции присваивания

(SET A S )

Значению А присваивается значение S.Значение А атом.SET

возвращает значение второго аргумента

(SET 'PET 'DOG) --> DOG

(SET PET 'ANIMAL) --> ANIMAL

DOG --> ANIMAL

PET --> DOG

(SETQ A1 S1 .. An Sn)

Аргументы A1...An квотируются и им присваиваются значения

аргументов S1...Sn (соответственно) . SETQ возвращает пос-

леднее присвоенное значение

(SETQ FOO '(D E F)) --> (D E F)

- 24 -

FOO --> (D E F)

(SETQ SUM 5) --> 5

(SETQ SUM (+ 3 4) SQR (* SUM SUM)) --> 49

SUM --> 7

SQR --> 49

8.7 Примитивы определения функций

(GETD А)

А-имя функции. Выдает в качестве своего значения определение

функции А (лямбда-выражение).

(GETD FACTORIAL) -->

(LAMBDA (N)(COND((ZEROP N) 1)(T (* (FACTORIAL (SUB1N))))))

(MOVD A1 A2)

Функции с именем А1 присваивается еще одно имя - А2.

Значение функции - новое имя.

(MOVD 'CAR 'FIRST) --> FIRST

(FIRST '(A B C D E)) --> A

(REMD A)

А-имя функции. Из оперативной памяти убирается пользова-

тельская функция с именем А.Значение функции - имя убира-

емой функции

(DEFUN FACTORIAL (N)

(COND ((ZEROP N) 0)

(T (FACTORIAL (SUB1 N) ) ) )

) --> FACTORIAL

(GETD FACTORIAL) -->

(LAMBDA (N)(COND ((ZEROP N) 1)(T (* (FACTORIAL (SUB1N))))))

(REMD 'FACTORIAL) --> FACTORIAL

(GETD 'FACTORIAL) --> NIL

(DEFUN A L F1 ... FN)

A-имя функции. Позволяет определить функцию пользователя

А. L -список параметров. F1...FN - операторы тела функции.

Значение функции DEFUN - имя созданной функции.

- 25 -

(DEFUN FACTORIAL (N)

(COND ((ZEROP N) 0)

(T (FACTORIAL (SUB1 N) ) )

)

) --> FACTORIAL