这个方案代码有什么问题?

时间:2014-07-09 02:49:08

标签: scheme sicp

我正在学习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]

2 个答案:

答案 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))))