Описать функцию, которая создавала бы список только из числовых элементов списка-аргумента - Lisp
Формулировка задачи:
описать функцию, которая создавала бы список только из числовых элементов списка-аргумента. список может содержать подсписки произвольной глубины.
Решение задачи: «Описать функцию, которая создавала бы список только из числовых элементов списка-аргумента»
textual
Листинг программы
;; racket-lang.org (define (foo lst) (if (list? lst) (map foo (filter (lambda (i) (not (symbol? i))) lst)) lst)) (foo '(1 2 a s ((5 6) g g) (((d))) 6)) ;'(1 2 ((5 6)) ((())) 6)
Объяснение кода листинга программы
В данном коде представлена функция с именем foo, которая принимает в качестве аргумента список lst. В первую очередь проверяется, является ли переданный аргумент списком. Если это так, то применяется функция map к результату работы функции filter. Функция filter отфильтровывает все элементы списка, которые не являются числами. Затем, с помощью функции map, создается новый список, в который включаются только числовые элементы из отфильтрованного списка. Если же переданный аргумент не является списком, то он просто возвращается в качестве результата работы функции. Список-аргумент для функции foo: '(1 2 a s ((5 6) g g) (((d))) 6)
- Проверка: является ли аргумент списком? Результат: #t
- Применение функции filter к аргументу. Результат: '(1 2 ((5 6)) ((())) 6)
- Применение функции map к результату функции filter. Результат: '(1 2 ((5 6)) ((())) 6)
- Возврат результата работы функции: '(1 2 ((5 6)) ((())) 6)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д