我在Scheme
中有以下代码(define (serie A B)
(if (> A B)
(
(define AB (* A B))
(write AB)
)
(
(write "No")
)
)
)
当我调用此函数时,会出现以下错误: prog.scm:5:53:未绑定变量
为什么会这样?
答案 0 :(得分:3)
在Scheme中,与其他编程语言中的花括号不同,括号不用于分隔代码块。并且你不能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