Для первой части эта процедура будет применять список функций к одному аргументу, предполагая, что все функции получают только один аргумент. Список с результатами возвращается
(define (apply-function-list flist element)
(map (lambda (f)
(f element))
flist))
Для второй части найти максимум в списке достаточно просто. Например, если элемент 2
и список функций (list sin cos sqr sqrt)
:
(apply max
(apply-function-list (list sin cos sqr sqrt) 2))
РЕДАКТИРОВАТЬ:
Вот еще одно возможное решение, без использования apply
и в одной процедуре:
(define (max-list-function flist element)
(foldr max -inf.0
(map (lambda (f) (f element))
flist)))
Используйте это так:
(max-list-function (list sin cos sqr sqrt) 2)