为scheme中的变量赋值

时间:2013-04-26 20:50:01

标签: scheme

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

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

它为所有内容返回10,甚至是应该返回-10作为输出的测试。我无法弄清楚为什么,虽然我确信这是显而易见的!你能帮助我找出我所缺少的东西吗?提前谢谢。

2 个答案:

答案 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。