我正在尝试为我在 Scheme 中具有计数功能的变量分配一个比例分数。如果计数大于或等于 2,我希望函数返回 10 分,如果计数小于 2,则返回 -10 分。这是我拥有的代码:
(define theScore (lambda (x)
(cond ((if = x 2) (if > x 2) 10) (else( - 10)))))
它为所有内容返回 10,即使是应该返回 -10 作为输出的测试。我不知道为什么,尽管我确信这是显而易见的!你能帮我查明我错过了什么吗?提前致谢。
我正在尝试为我在 Scheme 中具有计数功能的变量分配一个比例分数。如果计数大于或等于 2,我希望函数返回 10 分,如果计数小于 2,则返回 -10 分。这是我拥有的代码:
(define theScore (lambda (x)
(cond ((if = x 2) (if > x 2) 10) (else( - 10)))))
它为所有内容返回 10,即使是应该返回 -10 作为输出的测试。我不知道为什么,尽管我确信这是显而易见的!你能帮我查明我错过了什么吗?提前致谢。
以下是在 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))))
大多数有经验的 Scheme 程序员会像这样编写该函数:
(define (the-score x)
(if (< x 2) -10 10))
这是一个遵循您使用的样式的版本:
(define theScore
(lambda (x)
(cond ((>= x 2) 10)
(else -1))))
Scheme 中的标识符传统上用破折号分隔单词并且不使用驼峰式。