我在方案中具有以下代码
(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