我正在尝试将一个分数分配给变量,我在Scheme中有一个计数功能。我希望函数在计数大于或等于2时返回10分,如果计数小于2则返回-10分。这是我的代码:
(define theScore (lambda (x)
(cond ((if = x 2) (if > x 2) 10) (else( - 10)))))
它为所有内容返回10,甚至是应该返回-10作为输出的测试。我无法弄清楚为什么,虽然我确信这是显而易见的!你能帮助我找出我所缺少的东西吗?提前谢谢。
答案 0 :(得分: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))))
答案 1 :(得分:1)
大多数有经验的Scheme程序员都会编写这样的函数:
(define (the-score x)
(if (< x 2) -10 10))
这是一个遵循您使用的风格的版本:
(define theScore
(lambda (x)
(cond ((>= x 2) 10)
(else -1))))
Scheme中的标识符传统上用破折号分隔单词,不使用camelCase。