Список без чисел - Lisp
Формулировка задачи:
Определите функцию (f s), результатом которой является список,
получающийся из списка списков s после удаления всех подсписков, содержащих
числа.
Почему то не работает строка:
(defun f(lst)
(cond
((null lst) nil)
((listp (first lst)) ((f (first lst)) (f (rest lst))))
((numberp (first lst)) (f (rest lst)))
( t (cons (first lst) (f (rest lst))))
)
)((listp (first lst)) ((f (first lst)) (f (rest lst)))) Apply_: f - не является корректным именем функции! ==> ERRSTATE
((listp (first lst)) ((f (first lst)))) то же не работает.
Решение задачи: «Список без чисел»
textual
Листинг программы
(defun f(lst) (cond ((null lst) nil) ((listp (first lst)) (cons (f (first lst)) (f (rest lst))) ) ((numberp (first lst)) (f (rest lst))) ( t (cons (first lst) (f (rest lst)))) ) )
Объяснение кода листинга программы
В данном коде определён функцией f список lst. Если список пуст, то возвращается nil. Для непустого списка выполняется рекурсивный вызов функции f для первого элемента списка, а затем результат этого вызова присоединяется к результату вызова функции f для оставшейся части списка. Если первый элемент списка является числом, то он присоединяется к результату вызова функции f для оставшейся части списка. Если первый элемент списка не является числом и не является пустым списком, то он присоединяется к результату вызова функции f для оставшейся части списка.