我正在尝试编写一个带有两个参数的forAll过程:一个系列的开始值和结束值。结果闭包还需要两个参数:一个应用于系列中所有元素的操作,以及一个初始值。
这就是我所拥有的,我似乎错过了一些东西,或者我不理解闭包背后的概念。
(define (forAll n m)
(if (>= n m) '()
(forAll (+ n 1) m))
(lambda (op start) (op start n m))
)
答案 0 :(得分:0)
这看起来像是“将现有功能合并为新功能”练习 首先编写一个生成数字列表的函数,如果你还没有这样做的话 用它来实现这个功能 回顾一下你最近学到的东西,看看你是否已经有一个类似于闭包应该做的功能。
你最终会看起来像这样:
(define (forAll n m)
(lambda (op start)
(... code that builds a list and computes the result ...)))