【发布时间】:2012-10-13 18:53:58
【问题描述】:
我正在尝试了解如何在方案中将函数作为参数传递,但我在理解教程时遇到了很多麻烦。 这是我正在尝试做的事情:
(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)))))
【问题讨论】:
-
您是否有问题只是提出问题而没有讨论......受访者花费了宝贵的时间来回答您的问题并让他们这样,没有讨论或不接受...... . 有道理吗?