我正在学习sicp。 这个问题是前1.3。 我无法理解为什么这段代码有问题。 请帮帮我.. TT
这里是代码。
(define (test a b c)
(cond ((and (< a b) (< a c)) (+ (* b b) (* c c))
(and (< b a) (< b c)) (+ (* a a) (* c c))
(else (+ (* b b) (* c c)))
))
(test 1 2 3)
错误是
##输入端口60上的过早EOF##[标记61#[缓冲区17] 166 left]
答案 0 :(得分:2)
cond
的语法错误。以下是具有正确语法的相同代码:
(define (test a b c)
(cond ((and (< a b) (< a c)) (+ (* b b) (* c c)))
((and (< b a) (< b c)) (+ (* a a) (* c c)))
(else (+ (* b b) (* c c)))))
但是,您的代码仍然是错误的。你能明白为什么吗? (提示:else
分支表示什么,应该有什么表达?)
答案 1 :(得分:1)
缺少括号。
(define
(test a b c)
(cond
((and (< a b) (< a c)) (+ (* b b) (* c c)))
((and (< b a) (< b c)) (+ (* a a) (* c c)))
(else (+ (* b b) (* c c))))