上一节中我们对 scheme 有了初步印象,这节我们来介绍它的基本运算。 与 c 语言不同的是,scheme 种并没有真正意义上的变量。例如:
Int a = 3;
这种形式的语句在 scheme 中并不存在。在 c 语言中,一个变量必须声明类型,而 scheme 则有所不同。首先来看数的计算。 在 c 语言中,我们可以这样写:
Int a = 5;
Int b = 6;
Int c = a + b;
而在 scheme 中其书写是这样的:
(define a 5)
(define b 6)
(define c (+ a b))
这两者能达到同样的效果。但两者还是有较大的区别的,例如:
Int a = 5;
Int b = 6;
b = 9;
int c = a + b;
在这时,c 为 14 而在 scheme 中:
(define a 5)
(define b 6)
(define b 9)
(define c (+ a b))
此时则会报错,在 scheme 中所有的值都是常量,不可更改,而不像 c 语言,需要用 const 修饰才为常量。 四则运算在上节中也做过基本的介绍,这节中不再过多阐述。 同样的,scheme 中也有不同的类型,例如数字,字符,列表,其中列表是一个及其重要的组成。不夸张的说,scheme 的强大与列表有着很深的相关性。 接下来我们说说字符,在 c 语言中,我们有字符和字符串,例如:
char d = ‘h’;
string e = “abcdefg”;
在 scheme 中,我们如是表示:
(define d “h”)
(define e “abcdefg”)
值得注意的是,在 scheme 中,字符和字符串都用“xxxxxxxxx”表示,我们可以把字符理解成长度为一的字符串。 接下来我们说最重要的部分,列表: 列表主要由 cons car cdr 构成,其中 cons 是把两个组成部分合成一个序对,值得注意的时,cons 可以连接不同类型的单元,例如:
>(cons “abcdef” 6)
'("abcdef" . 6)
如果我们想得到“abcdef” 只需 (car (cons “abcdef” 6)) 如果要得到 6 只需要(cdr (cons “abcdef” 6)) 上面简要说了说 scheme 中基本的要素,下节中我们将介绍更多内容。