Определите функционал МНОГОФУН - Lisp
Формулировка задачи:
определите функционал МНОГОФУН, который использует функции, являющиеся аргументами, по следующей схеме (МНОГОФУН ’(f g ... h) x) <=> (LIST (f x) (g x) ... (h x)).
Решение задачи: «Определите функционал МНОГОФУН»
textual
Листинг программы
> (define (МНОГОФУН f-lst arg) (foldr (lambda (f t) (cons (f arg) t)) '() f-lst)) > (МНОГОФУН `(,sin ,cos) 1) '(0.8414709848078965 0.5403023058681398)
Объяснение кода листинга программы
- Определение функции
МНОГОФУНс двумя аргументамиf-lstиarg. - Используется функция
foldr, которая применяет функциюfк каждому элементу спискаt, добавляя результат в начало нового списка. - В качестве начального значения для функции
foldrиспользуется пустой список'(). - В качестве функции
fиспользуется лямбда-функция(lambda (f t) (cons (f arg) t). - Эта лямбда-функция применяет функцию
fк аргументуargи добавляет результат в начало спискаt. - В качестве значения
fиспользуется списокf-lst. - В качестве аргумента
argиспользуется число1. - Результатом выполнения функции
МНОГОФУНбудет список, состоящий из двух элементов(0.8414709848078965 0.5403023058681398). - Элементы списка представлены в виде пар, где первое значение - результат вычисления функции
sinс аргументомarg, а второе значение - результат вычисления функцииcosс аргументомarg.