我试图了解如何在方案中将函数作为参数传递,但我在理解教程时遇到了很多麻烦。这是我正在尝试做的事情:
(define (addone n)
(+ n 1))
(define (for-n start stop fn)
(if (< start stop)
(list)
(cons (fn start) (for-n (+ start 1) stop fn))))
基本上我只想要一个函数,它返回 fn 的值,用于列表中的 start、start+1、... start+stop。
因此 (for-n 1 5 (addone 0)) 的预期输出将是 (1 2 3 4 5)。我认为我在这里真的错过了一些非常基本的概念,因为我似乎甚至没有正确调用解释器中的函数,而且我没有掌握如何告诉方案将 fn 解释为一个函数而不仅仅是一个常规参数.
我想通了(尽管通过纯粹的试验和错误),我不确定我做了什么,但至少它有效!
(define (function x)
x)
(define (for-n start stop fn)
(if (> start stop)
(list)
(cons (fn start) (for-n (+ start 1) stop fn)))))