将函数列表应用于数字

Jon*_*Tan 5 scheme racket

我知道Scheme/Racket中的函数(如map,foldr和filter)可以做很棒的事情,例如将函数应用于元素列表.

是否可以将函数列表应用于单个元素?

我想生成每个函数生成的值,然后找到它们的最大值.谢谢.

Ósc*_*pez 5

对于第一部分,此过程将函数列表应用于单个参数,假设所有函数仅接收一个参数.返回包含结果的列表

(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)