我正在尝试编写一个返回闭包的过程。我希望能够将任何程序应用到我的系列中。 这是我到目前为止所做的事情,并不适合我。
(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
答案 0 :(得分:0)
您需要为本地过程指定一个名称,以便您可以对其进行递归,并且它需要包含比合同更多的参数,因为它需要为每次迭代传递状态。以下是您大致需要实施的内容的框架:
(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)))