我对Racket有疑问。
(我正在使用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))
- 部分标记为黑色!我认为问题是'
事。
答案 0 :(得分:8)
在Lisps中,'
是quote
运算符的简写,它可以防止对S表达式或符号进行求值。虽然x
通常是变量,但引用它会将其转换为一种轻量级字符串。引号不是if
语法的一部分。在你的案例中使用引用是没有意义的。
此外,Lisps不使用中缀运算符。添加只是一个普通的功能,包括加法在内的所有内容都被写成S-Expression。因此,我们会写x + 1
而不是(+ x 1)
。
因此我们的功能如下:
(define (number x)
(if (< x 4)
(+ x 1)
(* x 2)))