错误:方案中未结合的变量



我在方案中具有以下代码

(define (serie A B)
    (if (> A B)
        (
            (define AB (* A B))
            (write AB)
        )
        (
            (write "No")
        )  
    )
)

当我调用此功能时,出现以下错误:prog.scm:5:53:未结合变量

为什么会发生?

在方案中,括号是不是用于划定代码块的,与其他编程语言不同。而且您不能在另一个表达式内define一个变量(您只能在过程的开头进行);改用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

最新更新