在球拍中实现全部应用功能



我正在尝试编写一个函数apply-all,该函数传递了一个函数列表和一个数字,并在应用于该数字时生成函数值的列表

例如

(apply-all (list sqrt square cube) 4) => (2 16 64))

假设所有函数都已预先定义

我知道如何单独编写每个函数以及如何工作,但我对如何执行此操作并处理传递的函数有点困惑

您需要遍历函数列表,并依次为每个函数将其应用于 number 参数。最简单的方法是使用map过程:

(define (apply-all flist num)
  (map (lambda (f) (f num))
       flist))
(apply-all (list sqrt square cube) 4)
=> '(2 16 64)

这里有一种我喜欢的方法,使用 for/list

(define (apply-all fs n)
  (for/list ([f fs])
     (f n)))
(define (apply-all fs n)
  (cond
    ((null? fs) fs)
     (else (cons ((car fs) n) (apply-all ??? ???)))))

可能是你应该写的,如果这是一个作业。

相关内容

最新更新