【问题标题】:Using abstract list functions to iterate over a list of functions in Scheme使用抽象列表函数迭代 Scheme 中的函数列表
【发布时间】:2012-04-05 21:53:49
【问题描述】:

我如何编写一个函数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。

这是用抽象列表函数(过滤器、折叠器、地图...)完成的,无需递归。

【问题讨论】:

    标签: function map functional-programming scheme


    【解决方案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
    

    【讨论】:

    • 不错的解决方案,但我认为仅仅发布家庭作业问题的完整答案被认为是有害的。
    猜你喜欢
    • 2015-01-08
    • 2015-01-13
    • 2014-05-03
    • 2021-03-07
    • 1970-01-01
    • 2020-05-08
    • 2021-10-28
    • 2013-12-27
    • 1970-01-01
    相关资源
    最近更新 更多