ВУЗ:
Составители:
Рубрика:
35
(defun MEMB (a l) ; имя функции и список
аргументов
(cond ((null l) nil) ; список l пуст ?
((eq l (car l) a) l) ;элемент а найден ?
(t (MEMB a (cdr l))))) ; элемент а - в хвосте списка l?
С помощью этой функции можно проверить , принадлежит ли
некоторый элемент A данному списку L или нет.
Тело функции состоит из условного предложения , содержащего три
ветви. Они участвуют в процессе вычислений в зависимости
от
возникающей ситуации:
1. ((null l) nil) :
Аргумент - пустой список либо с самого начала , либо потому , что
просмотр списка окончен.
2. ((eq l (car l) a) l) :
Первым элементом является искомый элемент. В качестве
результата возвращается список , в котором А - первый элемент.
3. (t (MEMB a (cdr l))) :
Ни одно из предыдущих утверждений не верно: в таком случае либо
элемент содержится в хвосте списка ,
либо вовсе не входит в список.
Если список L пуст либо А в него не входит , то функция возвращает
NIL. В противном случае она возвращает в качестве своего значения ту
часть списка , в которой искомое А является его первым элементом. Это
отличное от NIL выражение соответствует логическому значению
"истина".
Пример вызова функции и
получение результатов:
(MEMB 'b '(a b c d))
После ввода этого выражения интерпретатор выдаст результат
(B C D)
В определении предиката MEMB первоначальная задача разбита на
три подзадачи. Первые две из них сводятся к просым условиям
окончания. Третья решает такую же задачу , но на шаг более короткую.
35 (defun MEMB (a l) ; имя функции и список аргументов (cond ((null l) nil) ; список l пуст ? ((eq l (car l) a) l) ;элемент а найден ? (t (MEMB a (cdr l))))) ; элемент а - в хвосте списка l? С помощью этой функции можно проверить , принадлежит ли некоторый элемент A данному списку L или нет. Тело функции состоит из условного предложения , содержащего три ветви. Они участвуют в процессе вычислений в зависимости от возникающей ситуации: 1. ((null l) nil) : Аргумент - пустой список либо с самого начала , либо потому , что просмотр списка окончен. 2. ((eq l (car l) a) l) : Первым элементом является искомый элемент. В качестве результата возвращается список , в котором А - первый элемент. 3. (t (MEMB a (cdr l))) : Ни одно из предыдущих утверждений не верно: в таком случае либо элемент содержится в хвосте списка , либо вовсе не входит в список. Если список L пуст либо А в него не входит , то функция возвращает NIL. В противном случае она возвращает в качестве своего значения ту часть списка , в которой искомое А является его первым элементом. Это отличное от NIL выражение соответствует логическому значению "истина". Пример вызова функции и получение результатов: (MEMB 'b '(a b c d)) После ввода этого выражения интерпретатор выдаст результат (B C D) В определении предиката MEMB первоначальная задача разбита на три подзадачи. Первые две из них сводятся к просым условиям окончания. Третья решает такую же задачу , но на шаг более короткую.
Страницы
- « первая
- ‹ предыдущая
- …
- 33
- 34
- 35
- 36
- 37
- …
- следующая ›
- последняя »