Реализовать с применением функционалов и лямбда-выражений следующую функцию - Lisp
Формулировка задачи:
Здравстуйте, помогите решить задачку:
"Реализовать с применением функционалов и лямбда-выражений следующую функцию: для исходного сложного числового списка, построить список, состоящий из элементов исходного списка, отрицательные числа в котором заменены 0."
Результат ожидается такого вида:
> (positive_list '(1 ((-2 3) -4) 5 (6)))
(1 ((0 3) 0) 5 (6))
Заранее спасибо!
Решение задачи: «Реализовать с применением функционалов и лямбда-выражений следующую функцию»
textual
Листинг программы
(defun task (lst) (mapcar #'(lambda (x) (cond ((listp x) (task x)) ((plusp x) x) (t 0))) lst)) ==> task (task '(1 ((-2 3) -4) 5 (6))) ==> (1 ((0 3) 0) 5 (6))
Объяснение кода листинга программы
В коде определена функция с именем task. Она принимает один аргумент lst. Внутри функции используется функция mapcar, которая применяет к каждому элементу списка lst анонимную функцию. Эта анонимная функция принимает один аргумент x и возвращает результат выполнения условного выражения в функции cond. Условное выражение в функции cond проверяет три условия:
- Если элемент x является списком, то рекурсивно вызывается функция task для этого элемента.
- Если элемент x больше нуля, то возвращается сам элемент.
- В противном случае возвращается ноль. Таким образом, результатом работы функции task для списка '(1 ((-2 3) — 4) 5 (6)) будет список (1 ((0 3) 0) 5 (6)).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д