Определить функцию, которая имеет значение T, если n-й элемент списка L есть атом. - Lisp
Формулировка задачи:
Для каждого из следующих условий определить функцию одного аргумента L , которая имеет значение T , если условие удовлетворяется, и NIL в противном случае:
• n - ый элемент L есть атом;
Решение задачи: «Определить функцию, которая имеет значение T, если n-й элемент списка L есть атом.»
textual
Листинг программы
(defun chk (l n) (if (zerop n) (atom (car l)) (chk (cdr l) (- n 1)))) ==> chk (chk '(a b (c d) e) 2) ==> NIL (chk '(a b (c d) e) 3) ==> T
Объяснение кода листинга программы
(1) Функция chk принимает два аргумента: l и n.
(2) Если n равно нулю, то функция возвращает atom первого элемента списка l.
(3) Если n не равно нулю, то функция рекурсивно вызывает саму себя для списка cdr l и аргумента n-1.
(4) Функция chk определена с помощью defun.
(5) Пример использования функции chk для списка '(a b (c d) e) и аргумента 2 возвращает NIL, потому что второй элемент списка — это список (c d), а не атом.
(6) Пример использования функции chk для списка '(a b (c d) e) и аргумента 3 возвращает T, потому что третий элемент списка — это атом d.