Описать функцию, которая создавала бы список только из числовых элементов списка-аргумента - 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)

  1. Проверка: является ли аргумент списком? Результат: #t
  2. Применение функции filter к аргументу. Результат: '(1 2 ((5 6)) ((())) 6)
  3. Применение функции map к результату функции filter. Результат: '(1 2 ((5 6)) ((())) 6)
  4. Возврат результата работы функции: '(1 2 ((5 6)) ((())) 6)

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


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

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

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