我在Scheme中有以下代码
(define (serie A B)
(if (> A B)
(
(define AB (* A B))
(write AB)
)
(
(write "No")
)
)
)
当我调用这个函数时,出现以下错误: prog.scm:5:53:未绑定(bind)变量
为什么会发生这种情况?
最佳答案
在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
关于scheme - 错误: Unbound variable in Scheme,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42458019/