球拍中if-then-else的语法

球拍中if-then-else的语法

问题描述:

我在球拍上遇到了问题。球拍中if-then-else的语法

(我使用在http://docs.racket-lang.org/guide/conditionals.html教程)

我试图写,这是否一个函数:如果x是小于4,则应当增加1,否则它应乘以2 。

(define (number x) 
    (if (< x 4) 'x+1 'x*2)) 

所以我编译它DrRacket,但不起任何作用。 (if (< x 5) 'x+1 'x*2)) - 部分标记为黑色!我认为问题是'的事情。

在Lisps中,'quote运算符的简写形式,它可防止对S表达式或符号进行评估。虽然x通常是一个变量,引用它变成一种轻量级的字符串。引号不是if语法的一部分。在你的情况下使用引号是没有意义的。

此外,Lisps不使用中缀运算符。加法只是一个普通的函数,所有的东西,包括加法,都被写成S表达式。因此,我们会写(+ x 1)而不是x + 1

因此,我们的功能会再看看这样的:

(define (number x) 
    (if (< x 4) 
     (+ x 1) 
     (* x 2)))