编写一个带有两个参数的 forAll 过程:一个系列的开始值和结束值,并将给定的过程应用于该系列

Writing a forAll procedure that takes two arguments: the start and end values of a series and applies a given procedure to that series

我正在尝试编写一个带有两个参数的 forAll 过程:一个系列的开始值和结束值。生成的闭包也需要两个参数:一个应用于系列中所有元素的操作,以及一个初始值。

这就是我所拥有的,但我似乎遗漏了一些东西,或者我不理解闭包背后的概念。

(define (forAll n m)
   (if (>= n m) '()
   (forAll (+ n 1) m))

 (lambda (op start) (op start n m))
       )

这看起来像一个 "combine existing functions into new ones" 练习。
如果您还没有这样做,请先编写一个生成数字列表的函数。
用它来实现这个功能。
回顾一下你最近学到的东西,看看你是否已经有了一个函数,它可以做一些类似于闭包应该做的事情。

您最终得到的结果可能如下所示:

(define (forAll n m)
    (lambda (op start)
        (... code that builds a list and computes the result ...)))