Функция mapcar - Lisp
Формулировка задачи:
(mapcar (lambda (r) (/(car(cdr (cdr r))))10) '((1 Ivanov 300 1) (2 Petrov 200 1) (3 Sidorov 100 2)))
Решение задачи: «Функция mapcar»
(mapcar (lambda (r) (/ (car (cdr (cdr r))) 10)) '((1 Ivanov 300 1) (2 Petrov 200 1) (3 Sidorov 100 2))) ==> (30 20 10) ;; или так: (mapcar (lambda (r) (/ (caddr r) 10)) '((1 Ivanov 300 1) (2 Petrov 200 1) (3 Sidorov 100 2))) ==> (30 20 10)
Объяснение кода листинга программы
Код представляет собой реализацию функции mapcar
на языке Lisp. Функция mapcar
принимает два аргумента: функцию и список. Она применяет функцию к каждому элементу списка и собирает результаты в новый список.
В данном случае функция mapcar
применяется к списку ((1 Ivanov 300 1) (2 Petrov 200 1) (3 Sidorov 100 2))
. Функция, которую передают в mapcar
, это lambda (r) (/ (car (cdr (cdr r))) 10)
. В данном случае она извлекает третий элемент из каждого элемента списка, используя car
и cdr
, и затем делит его на 10.
Результатом выполнения функции mapcar
будет новый список, содержащий результаты применения функции ко всем элементам исходного списка. В данном случае результатом будет (30 20 10)
, так как каждый третий элемент исходного списка был разделен на 10.
Второй вариант кода отличается только использованием caddr
вместо car
и cdr
. Это связано с тем, что caddr
является более коротким и удобным способом доступа к третьему элементу списка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д