2

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

例如,

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

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

我知道如何分别编写每个函数以及它是如何工作的,但我对如何去做这个和处理传递的函数有点困惑

4

3 回答 3

3

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

(define (apply-all flist num)
  (map (lambda (f) (f num))
       flist))

(apply-all (list sqrt square cube) 4)
=> '(2 16 64)
于 2012-10-10T22:15:49.557 回答
2

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

(define (apply-all fs n)
  (for/list ([f fs])
     (f n)))
于 2012-10-10T22:26:08.380 回答
1
(define (apply-all fs n)
  (cond
    ((null? fs) fs)
     (else (cons ((car fs) n) (apply-all ??? ???)))))

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

于 2012-10-11T18:04:56.863 回答