我正在进行sicp的练习.4.9我试图实现“for语句”的语法,看起来像其他人会在c ++中看到的:
(for(((i 0)(j 1)) (<(+ i j)10) …
正如@Rainer在评论中提到的,你的定义 inner-loop 是不正确的。
inner-loop
方案中的函数定义为: (define (name ...args) body)
(define (name ...args) body)
或者如果没有参数: (define (name) body)
(define (name) body)
以下作品:
((lambda () (define j 1) (define i 0) (define (inner-loop) (if (< (+ i j) 10) (begin (display "i:") (display i) (display "\n") (display "j:") (display j) (display "\n") (set! i (+ i 1)) (inner-loop)))) (inner-loop)))