2012-03-21 59 views
1

如何编写函数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.

这是要与抽象列表函数(过滤器,foldr相似,地图,...)没有递归方法来实现。

回答

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 
+0

很好的解决方案,但我认为只是发布完整的答案作业问题被认为是有害的。 – gcbenison 2012-03-21 18:06:44