分类: LINUX
2012-07-15 17:41:06
lisp数据类型
1. 数字
2. 符号symbol
二. lists(列表)
列表有两种形式:一种书面打印形式 printed representation 和内部形式
打印形式更便于人类使用,内部形式是在计算机内存中的如何存储
一个lists中可以包含符号symbol和数字
下面一个例子:
(RED GREEN BLUE)
在计算机内部存储方式
在计算机内部,lists被表示为cons cells的链表形式。
最后的nil,我们会习惯性的忽略不写。
Nested lists
((BLUE SKY) (GREEN GRASS) (BROWN EARTH))
内部表示
三. 列表求值
当lisp解释器对列表求值时,它会把把列表的第一个元素当作一个可执行的函数名
例如(+ 2 3) (add 3 4)
如果不想列表被求值就需要在列表前加上单引号
‘(one two three)
否则lisp解释器把one当作函数,如果没有定义该函数,就会出错
Lisp error: (void-function one)
lisp解释器可以对列表求值,也可以对列表中的元素(数字,符号)求值,
如果数字和符号前面没有引号也没有被括号包围,lisp会对其求值
对数字求值还是数字本身,对符号求值会得到符号的值,
66 -->求值后66
'66 -->不求值
(66)-->把66当作函数
'sss-->不进行求值
sss-->求值得到变量的值,如果定义了
(sss)-->把sss当作函数名
如果该符号没有定义就会产生为定义的错误
Lisp error: (void-variable sss),我们对sss求值,但是还没定义,所以lisp
就产生未定义的错误