SICP 1.3 解释器错误未知标识符:和
SICP 1.3 interpreter error unknown identifier: and
我正在使用浏览器中的解释器(没有任何本地设置):https://inst.eecs.berkeley.edu/~cs61a/fa14/assets/interpreter/scheme.html
并收到以下解释器异常消息:
SchemeError: unknown identifier: and
Current Eval Stack:
-------------------------
0: and
1: (cond (and (< x y) (< x z)) (sqrt-sum y z))
2: (f 1 2 3)
对于以下代码:
; define a procedure that takes three numbers
; as arguments and returns the sum of the squares
; of the two larger numbers
(define (square) (* x x))
(define (sqrt-sum x y)
(+ (square x) (square y)))
(define (f x y z)
(cond (and (< x y) (< x z)) (sqrt-sum y z))
(cond (and (< y x) (< y z)) (sqrt-sum x z))
(cond (and (< z y) (< z x)) (sqrt-sum x y)))
(f 1 2 3)
我正在努力寻找有关此解释器所基于的特定 Scheme 版本的任何信息;抱歉
cond
的语法不正确。语法是
(cond (condition1 value1...)
(condition2 value2...)
...)
在您的代码中,第一个条件应该是表达式 (and (< x y) (< x z))
。但是您没有围绕条件和值的括号。您只有 and
的条件,而不是 (and (< x y) (< x z))
。由于 and
不是具有值的变量,因此会出现错误。
正确的语法是:
(define (f x y z)
(cond ((and (< x y) (< x z)) (sqrt-sum y z))
((and (< y x) (< y z)) (sqrt-sum x z))
((and (< z y) (< z x)) (sqrt-sum x y))))
我正在使用浏览器中的解释器(没有任何本地设置):https://inst.eecs.berkeley.edu/~cs61a/fa14/assets/interpreter/scheme.html
并收到以下解释器异常消息:
SchemeError: unknown identifier: and
Current Eval Stack:
-------------------------
0: and
1: (cond (and (< x y) (< x z)) (sqrt-sum y z))
2: (f 1 2 3)
对于以下代码:
; define a procedure that takes three numbers
; as arguments and returns the sum of the squares
; of the two larger numbers
(define (square) (* x x))
(define (sqrt-sum x y)
(+ (square x) (square y)))
(define (f x y z)
(cond (and (< x y) (< x z)) (sqrt-sum y z))
(cond (and (< y x) (< y z)) (sqrt-sum x z))
(cond (and (< z y) (< z x)) (sqrt-sum x y)))
(f 1 2 3)
我正在努力寻找有关此解释器所基于的特定 Scheme 版本的任何信息;抱歉
cond
的语法不正确。语法是
(cond (condition1 value1...)
(condition2 value2...)
...)
在您的代码中,第一个条件应该是表达式 (and (< x y) (< x z))
。但是您没有围绕条件和值的括号。您只有 and
的条件,而不是 (and (< x y) (< x z))
。由于 and
不是具有值的变量,因此会出现错误。
正确的语法是:
(define (f x y z)
(cond ((and (< x y) (< x z)) (sqrt-sum y z))
((and (< y x) (< y z)) (sqrt-sum x z))
((and (< z y) (< z x)) (sqrt-sum x y))))