Chinaunix首页 | 论坛 | 博客
  • 博客访问: 962443
  • 博文数量: 109
  • 博客积分: 554
  • 博客等级: 中士
  • 技术积分: 2577
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-04 12:49
文章分类

全部博文(109)

文章存档

2019年(5)

2016年(7)

2015年(9)

2014年(1)

2013年(71)

2012年(16)

分类: LINUX

2012-07-15 17:41:06

lisp数据类型

1. 数字

 

2. 符号symbol

 

二. lists(列表)

列表有两种形式:一种书面打印形式 printed representation 和内部形式

打印形式更便于人类使用,内部形式是在计算机内存中的如何存储

一个lists中可以包含符号symbol和数字

下面一个例子:

(RED GREEN BLUE)

在计算机内部存储方式

J%(8}UG3HJC%$O(D_CQYP96

在计算机内部,lists被表示为cons cells的链表形式。

最后的nil,我们会习惯性的忽略不写。

 

Nested lists

((BLUE SKY) (GREEN GRASS) (BROWN EARTH))

内部表示

JSFYZ[JOR7%PSQ650K_4XSG

 

三. 列表求值

当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

就产生未定义的错误

阅读(2141) | 评论(0) | 转发(0) |
0

上一篇:block & sector区别

下一篇:fatfs文件系统移植

给主人留下些什么吧!~~