我想在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))但我想知道如何才能将独立的函数从列表中调用。是否有更好的方法来定义函数列表并分别调用它们?
发布于 2014-04-27 16:06:27
是的,有更好的方法。您应该使用list,而不是引用:
(define list-of-funs (list sqr dbl add-5))原因是'(sqr dbl add-5)生成符号列表,而(list sqr dbl add-5)生成过程对象列表。您可以调用过程对象。你不能调用符号。
您可以单独访问函数,方法是使用first、second或third (来自SRFI 1)从列表中选择元素,例如,
((first list-of-funs) 49) ; => 7否则,您可能会决定要通过它们来进行map,或者其他什么的。例如,
(define (square-double-and-add5 x)
(map (lambda (f) (f x)) list-of-funs))https://stackoverflow.com/questions/23325362
复制相似问题