我知道Scheme/Racket中的函数(如map,foldr和filter)可以做很棒的事情,例如将函数应用于元素列表.
是否可以将函数列表应用于单个元素?
我想生成每个函数生成的值,然后找到它们的最大值.谢谢.
对于第一部分,此过程将函数列表应用于单个参数,假设所有函数仅接收一个参数.返回包含结果的列表
(define (apply-function-list flist element)
(map (lambda (f)
(f element))
flist))
Run Code Online (Sandbox Code Playgroud)
对于第二部分,在列表中找到最大值非常简单.例如,如果元素是,2并且函数列表是(list sin cos sqr sqrt):
(apply max
(apply-function-list (list sin cos sqr sqrt) 2))
Run Code Online (Sandbox Code Playgroud)
编辑:
这是另一种可能的解决方案,无需apply在单个程序中使用:
(define (max-list-function flist element)
(foldr max -inf.0
(map (lambda (f) (f element))
flist)))
Run Code Online (Sandbox Code Playgroud)
像这样使用它:
(max-list-function (list sin cos sqr sqrt) 2)
Run Code Online (Sandbox Code Playgroud)