Удалить из заданного списка пустые списки - Lisp
Формулировка задачи:
Помогите, пожалуйста, на Scheme: удалить из заданного списка пустые списки
Решение задачи: «Удалить из заданного списка пустые списки»
textual
Листинг программы
(defun del-null (lst) (cond ((null lst) nil) ((null (car lst)) (del-null (cdr lst))) (t (cons (car lst) (del-null (cdr lst)))))) ==> del-null (del-null '(1 2 nil 3 4 nil nil)) ==> (1 2 3 4)
Объяснение кода листинга программы
Функция del-null
принимает в качестве аргумента список lst
и возвращает новый список, в котором удалены все пустые списки.
- Если
lst
равноnil
, то возвращаемnil
. - Если
car lst
равноnil
, то рекурсивно вызываемdel-null
с аргументомcdr lst
. - Если
car lst
не равноnil
, то возвращаем новый список, в котором первый элемент —car lst
, а остальные элементы получены путем рекурсивного вызоваdel-null
с аргументомcdr lst
. Пример: (del-null '(1 2 nil 3 4 nil nil)) car lst
равно1
.cdr lst
равно(2 nil 3 4 nil nil)
.car lst
равно2
.cdr lst
равно(3 4 nil nil)
.car lst
равно3
.cdr lst
равно(4 nil nil)
.car lst
равно4
.cdr lst
равноnil
.- Возвращаем
(1 2 3 4)
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д