1

我正在尝试为我在 Scheme 中具有计数功能的变量分配一个比例分数。如果计数大于或等于 2,我希望函数返回 10 分,如果计数小于 2,则返回 -10 分。这是我拥有的代码:

(define theScore (lambda (x) 
  (cond ((if = x 2) (if > x 2) 10) (else( - 10)))))

它为所有内容返回 10,即使是应该返回 -10 作为输出的测试。我不知道为什么,尽管我确信这是显而易见的!你能帮我查明我错过了什么吗?提前致谢。

4

2 回答 2

2

以下是在 Scheme 中执行比较的方法:

(if <condition>
    <something>
    <else>)

所以基本上这是一个语法问题,仅此而已。换句话说,您的程序应该是这样的:

(define theScore
  (lambda (x)
    (if (>= x 2)
        10
        -10)))

请注意,比较一个值是否等于或大2于是由运算符的单个应用程序执行的,如下所示>=(>= x 2)现在,如果你想使用cond(你混淆了这部分),它是如何完成的:

(define theScore
  (lambda (x)
    (cond ((>= x 2) 10)
          (else -10))))
于 2013-04-26T20:58:20.410 回答
1

大多数有经验的 Scheme 程序员会像这样编写该函数:

(define (the-score x)
  (if (< x 2) -10 10))

这是一个遵循您使用的样式的版本:

(define theScore
  (lambda (x)
    (cond ((>= x 2) 10)
          (else -1))))

Scheme 中的标识符传统上用破折号分隔单词并且不使用驼峰式。

于 2013-04-26T20:58:44.437 回答