list
list
结构'(rose violet daisy buttercup)
(1) 单引号表示是一个列表的开始segmentfault
(2) 列表中的元素直接使用空格隔离函数
(3) 列表中的元素包含于()
中this
"
的字符串列表" "
包含的字符串看成一个列表元素spa
运行eval
程序后的3种可能状况:code
(1) 直接返回一个列表htm
(2) 产生error message
pdo
(3) 把列表中的第一个元素,解析为一个执行命令,执行该列表字符串
在一个列表以前添加'
,可使得运行时候,不解析具体的表达式,只是输出表达式的原始字符串
除了最多见的列表结构,还有以下类型
(1) 变量
变量不须要'
和()
(2) 宏
(3) 嵌套列表
嵌套列表,先执行最里层的表达式,再依次外层执行
字节码
vs lisp代码
名称 | lisp 代码 |
字节码 |
---|---|---|
文件后缀 | .el |
.elc |
速度比较 | 须要先解释为字节码后,在执行 | 预编译的lisp 代码, 执行速度更快 |
首先执行内部的表达式,而后将结果看成外层表达式的参数,再次计算外部表达式
如上,首先计算(+ 3 3)
,计算结果为6
, 看成外层函数的参数,即(+ 2 6)
,最终的计算结果为 8
variable
一个变量由一个符号symbol
和符号绑定的值value
组成,绑定的值能够是
值的类型 | 示例 |
---|---|
数值 | 10 |
字符串 | "such as this" |
列表 | '(spruce pine oak) |
函数定义 |
(1) 变量被看成函数名称
若是一个列表中只有1个变量,会被解释器解释为一个函数的定义
(fill-column)
如上,fill-column
会被解释为一个函数名称,由于该变量没有绑定函数,全部*backtrace*
中会出现以下的error message
(2) 缺乏函数参数
(+ 1 1)
如上,将光标放到+
后,执行C-c C-e
,解释器将+
看成函数名称,可是发现没有函数参数
将产生以下错误