scheme - 错误: Unbound variable in Scheme

标签 scheme

我在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/

相关文章:

lisp - 处理列表和附加值的开始方案 (LISP)

recursion - 查找列表中的子列表

linux - 在 64 位 Arm 上编译并安装 Chez Scheme?

algorithm - 方案中的循环排列

scheme - 实用方案编程

binary - 在Scheme中将递归函数转换为尾递归函数

scheme - 列表长度比较

scheme - 这个scheme/script-fu/gimp代码有什么错误?

clojure - Lisp 家族 : how to escape object-oriented java-like thinking?