List 在Scheme中制作函数列表

List 在Scheme中制作函数列表,list,scheme,List,Scheme,我想在Scheme中创建一个函数列表。我想应该是这样的 (define (sqr x) (* x x)) (define (dbl x) (* 2 x)) (define (add-5 x) (+ 5 x)) (define list-of-funs '(sqr dbl add-5)) 但我想知道如何从列表中调用单独的函数。是否有更好的方法定义函数列表并单独调用它们?是的,有更好的方法。您应该使用列表,而不是引用: (define list-of-funs (list sqr dbl add

我想在Scheme中创建一个函数列表。我想应该是这样的

(define (sqr x) (* x x))
(define (dbl x) (* 2 x))
(define (add-5 x) (+ 5 x))

(define list-of-funs '(sqr dbl add-5))

但我想知道如何从列表中调用单独的函数。是否有更好的方法定义函数列表并单独调用它们?

是的,有更好的方法。您应该使用
列表
,而不是引用:

(define list-of-funs (list sqr dbl add-5))
原因是
(sqr dbl add-5)
生成符号列表,而
(list sqr dbl add-5)
生成过程对象列表。您可以调用过程对象。不能调用符号

您可以通过使用
第一个
第二个
第三个
(从SRFI 1)从列表中选择元素,分别访问这些功能,例如

((first list-of-funs) 49)    ; => 7
或者,您可能会决定通过它们映射,或者其他什么。e、 g

(define (square-double-and-add5 x)
  (map (lambda (f) (f x)) list-of-funs))