List 在Scheme中制作函数列表
我想在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
(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))