Список без чисел - 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 для оставшейся части списка.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.286 из 5
Похожие ответы