【问题标题】:what is wrong this scheme code?这个方案代码有什么问题?
【发布时间】:2014-07-09 02:49:07
【问题描述】:

我正在学习 scp。 这个问题是前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 来自缓冲区 #[mark 61 #[buffer 17] 上的过早 EOF 还剩 166 个]

【问题讨论】:

  • 你好像少了一个括号。
  • 天啊~!!你是对的!!谢谢 :)

标签: scheme sicp


【解决方案1】:

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 分支是什么意思,应该有什么表达式?)

【讨论】:

  • 我修复了代码。谢谢!!但我不明白还有什么问题。
  • 测试c 是最小数字的情况。
  • 哎呀! (否则(+(* a a)(* b b)))))我错过了!非常感谢!!
【解决方案2】:

缺少括号。

(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))))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 2014-08-29
    • 2013-06-05
    • 2014-06-04
    • 2011-07-07
    相关资源
    最近更新 更多