Использование функций абстрактного списка для перебора списка функций в схеме - PullRequest
1 голос
/ 21 марта 2012

Как я могу написать функцию max-list-function, которая использует список функций, а затем создает функцию f, такую, что для каждого x, (f x) выдает максимальное значение всех функций g в список функций?

Например (max-list-function (lambda (n) (+ n 4)) (lambda (n) (- 15 n)))) создает такую ​​функцию, что (f 2) возвращает 13, а (f 10) возвращает 14.

Это должно быть сделано с помощью функций абстрактного списка (фильтр, сворачивание, отображение, ...) без рекурсии.

1 Ответ

1 голос
/ 21 марта 2012

Попробуйте это:

(define (max-list-function flist)
  (lambda (n)
    (foldr max -inf.0
           (map (lambda (f) (f n))
                flist))))

Используйте это так:

(define f (max-list-function 
           (list (lambda (n) (+ n 4)) (lambda (n) (- 15 n)))))

(f 2)
> 13.0

(f 10)
> 14.0
...