Scheme 错误:方案中的未绑定变量

Scheme 错误:方案中的未绑定变量,scheme,Scheme,我在方案中有以下代码 (define (serie A B) (if (> A B) ( (define AB (* A B)) (write AB) ) ( (write "No") ) ) ) 调用此函数时,出现以下错误: 程序scm:5:53:未绑定变量 为什么会发生这种情况?在Scheme中,括号不用于分隔代码块,这与其他编程

我在方案中有以下代码

(define (serie A B)
    (if (> A B)
        (
            (define AB (* A B))
            (write AB)
        )
        (
            (write "No")
        )  
    )
)
调用此函数时,出现以下错误: 程序scm:5:53:未绑定变量


为什么会发生这种情况?

在Scheme中,括号不用于分隔代码块,这与其他编程语言中的大括号不同。不能在另一个表达式中定义变量,只能在过程开始时定义;改用let。构造和缩进代码的正确方法是:

(define (serie A B)
  (if (> A B)
      (let ((AB (* A B)))
        (write AB))
      (write "No")))
当然,你并不需要一个局部变量,你应该直接写出乘法的结果:

(define (serie A B)
  (if (> A B)
      (write (* A B))
      (write "No")))
无论哪种方式,它都能按预期工作:

(serie 10 20)
=> "No"
(serie 100 20)
=> 2000

报告的特定错误是由该错误的定义引起的。详见我的答案。谢谢你们,你们帮了我很多忙,我必须理解定义表达式,因为它让我感到困惑。我在哪里可以找到关于这种编程语言和函数式编程的好信息?@Lemark我推荐如何设计程序或小程序Schemer@Lemark如何设计程序是可用的。