emacs lisp 学习 (2) ——列表

1、参考

emacs系列文章目录——更新inghtml

An Introduction to Programming in Emacs Lispnode

2、list

2.1 list结构

'(rose
  violet
  daisy
  buttercup)

(1) 单引号表示是一个列表的开始segmentfault

(2) 列表中的元素直接使用空格隔离函数

(3) 列表中的元素包含于()this

image.png

2.2 带有数字/子列表的列表

image.png

2.3 带有"的字符串列表

image.png

" "包含的字符串看成一个列表元素spa

2.4 运行列表

运行eval程序后的3种可能状况:code

(1) 直接返回一个列表htm

(2) 产生error messagepdo

(3) 把列表中的第一个元素,解析为一个执行命令,执行该列表字符串

在一个列表以前添加',可使得运行时候,不解析具体的表达式,只是输出表达式的原始字符串

image.png

2.5 其余的类型

除了最多见的列表结构,还有以下类型

(1) 变量

变量不须要'()

(2) 宏

(3) 嵌套列表

嵌套列表,先执行最里层的表达式,再依次外层执行

2.6 字节码 vs lisp代码

名称 lisp代码 字节码
文件后缀 .el .elc
速度比较 须要先解释为字节码后,在执行 预编译的lisp代码, 执行速度更快

image.png

2.7 执行顺序

首先执行内部的表达式,而后将结果看成外层表达式的参数,再次计算外部表达式

image.png

如上,首先计算(+ 3 3),计算结果为6, 看成外层函数的参数,即(+ 2 6),最终的计算结果为 8

3、变量

3.1 variable

image.png

一个变量由一个符号symbol和符号绑定的值value组成,绑定的值能够是

值的类型 示例
数值 10
字符串 "such as this"
列表 '(spruce pine oak)
函数定义

3.2 解释变量可能出现的错误

(1) 变量被看成函数名称

若是一个列表中只有1个变量,会被解释器解释为一个函数的定义

(fill-column)

如上,fill-column会被解释为一个函数名称,由于该变量没有绑定函数,全部*backtrace*中会出现以下的error message

image.png

(2) 缺乏函数参数

(+ 1 1)

如上,将光标放到+后,执行C-c C-e,解释器将+看成函数名称,可是发现没有函数参数

将产生以下错误

image.png

3.3 函数的参数

相关文章
相关标签/搜索