Scheme 宏展开期间出错:空体#f

Scheme 宏展开期间出错:空体#f,scheme,Scheme,我正在学习Scheme,我无法找出我在这段代码中犯了什么错误: (define (distance a b) (define c 1) (define loop (lambda (a b c) ((if (<= c b) (begin (display (c (* a c))) (newline) (apply loop '(a b (+ c 1)))) 'done))))) (

我正在学习Scheme,我无法找出我在这段代码中犯了什么错误:

(define (distance a b)
  (define c 1)
  (define loop
    (lambda (a b c)
      ((if (<= c b)
       (begin
         (display (c (* a c)))
         (newline)
         (apply loop '(a b (+ c 1))))
       'done)))))
(定义(距离a和b)
(定义c 1)
(定义循环
(lambda(a、b、c)

((如果(似乎有一个缺失体。在方案中,lambda被定义为

(lambda (args ...)
  (define local-binding ...) ...
  body ...)
distance
c
loop
是局部定义,但没有实体。因此
distance
a
b
没有任何关系,如果它起作用,它将始终返回未定义的值。例如,这不是一个非常有用的过程


当你确定你可能想看一看时,你的代码在
(display(c(*a c)))上没有给我一个错误,
将调用函数
c
,但是
c
是常量
1
,这似乎是错误的。哦,这是有意义的!一定是它。除非我做错了其他事情。。
(lambda (args ...)
  (define local-binding ...) ...
  body ...)