使用抽象列表函数迭代Scheme中的函数列表

时间:2012-03-21 11:21:57

标签: function map functional-programming scheme

如何编写消耗函数列表的函数max-list-function,然后生成函数f,以便对于每x (f x)g生成最大值函数列表中的所有函数(max-list-function (lambda (n) (+ n 4)) (lambda (n) (- 15 n))))

例如(f 2) 生成一个函数,(f 10)返回13,{{1}}返回14。

这是通过抽象列表函数(filter,foldr,map,...)完成的,没有递归。

1 个答案:

答案 0 :(得分:1)

试试这个:

(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