我正在寻找创建一个函数,该函数返回一个'n'个函数列表,每个函数的输入分别增加1,2,3 ... n。
我使用DrRacket试试这个。预期结果的样本:
> (map (lambda (f) (f 20)) (func-list 5))
(21 22 23 24 25)
我能够以静态方式写下来:
> (define (func-list num)
> (list (lambda (x) (+ x 1)) (lambda (x) (+ x 2)) (lambda (x) (+ x 3)) (lambda (x) (+ x 4)) (lambda (x) (+ x 5)))
[编辑]
此外,对实施也有一些限制:
如果有人可以帮助我,那将是很棒的。提前谢谢。
答案 0 :(得分:0)
不是明确地写出列表,更好的方法是递归为任意n构造它,如下所示:
(define (func-list n)
(define (func-lst a n)
(if (> a n)
empty
(cons (lambda (x) (+ x a))
(func-lst (add1 a) n))))
(func-lst 1 n))
例如:
> (map (lambda (f) (f 20)) (func-list 0))
'()
> (map (lambda (f) (f 20)) (func-list 5))
'(21 22 23 24 25)