编写将过程应用于系列的闭包

writing a closure that applies an procedure to a series

我正在尝试编写一个 returns 闭包的过程。我希望能够对我的系列应​​用任何程序。 这是我目前所拥有的,但对我不起作用。

(define (forAll n m)
   (lambda (op start)
      (op (op n start) (+ n 1) m)))

我希望能够进行这些操作:

(define my_iterator (forAll 1 5))       
(my_iterator + 0) → 15
(my_iterator * 1) → 120
(my_iterator (lambda (x y) (display x)(display " ")) "") → 1 2 3 4 5

您需要为本地过程命名,以便您可以对它进行递归,并且它需要比您的合同有更多的参数,因为您需要为每次迭代传递状态。以下是您大致需要实现的框架:

(define (for-all from to)
  (define (helper op start from)
    (if stop-condition-expression
        start
        (helper op new-start-expression new-from-expression)))

  (lambda (op start)
    (helper op start from)))