首页 > 解决方案 > 为什么我会收到错误消息:cond:期望有一个带有问题和答案的子句

问题描述

为什么我收到错误:cond: expected a clause with a question and an answer, but found a clause with only one part?我究竟做错了什么?

基本上,我必须找出判别式是正数还是负数。

(define (has-real-roots? a b c)
  (cond
    [(positive? (- (square b) (* 4 a c)))]
    [else false]))

标签: if-statementschemelispracket

解决方案


根据文档,表达式中的每个子句都cond需要两部分:“问题”(条件)和“答案”(要返回的值)。您的代码缺少第一个子句的“答案”部分,在这种情况下返回true是合适的:

(define (has-real-roots? a b c)
  (cond [(positive? (- (square b) (* 4 a c))) true]
        [else false]))

但是你真的不需要在cond这里使用 a ,这更简单并且做同样的事情:

(define (has-real-roots? a b c)
  (positive? (- (* b b) (* 4 a c))))

推荐阅读