emacs学习lisp (1) ——概览

1、参考

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

Emacs Lisp 简明教程github

2、scratch缓存区

进入scratch缓存区,segmentfault

模式选择 lisp-interaction-mode缓存

(注: 能够经过 m-x lisp-interaction-mode ret 切换模式)函数

3、小试牛刀

3.1 hello world

image.png

(message "hello world")

3.2 两个执行命令

(1) c-x c-espa

执行lisp代码的命令为 c-x c-e, 即函数 eval-last-sexpcode

函数解释以下:教程

image.png

执行光标以前的表达式ci

(2) c-j,即函数 val-print-last-sexp作用域

函数解释以下:

image.png

执行光标以前的表达式,和c-x c-e的不一样之处是,执行结果不只在底部的mini buffer中输出,并且在 current buffer中也会显示

注意: 一次只会解释执行一个表达式

4、函数

4.1 函数定义

image.png

函数由3个部分组成,

(1)函数名称

(2)函数参数列表

(3)函数体

函数体和函数定义之间,能够经过"doc string"添加函数文档

4.2 函数执行

image.png

4.3 注意

注意,

(1) 若是须要执行新定义的函数 hello-world,须要先在函数定义结尾,执行c-x c-e解析执行该新函数,不然会报错

Debugger entered--Lisp error: (void-function hello-world)

(2) 当执行过函数定义后,光标在函数名时候,经过命令 c-h f能够查看该函数的文档

image.png

5、变量

5.1 setq

image.png

能够经过 c-h v查看变量的文档

image.png

5.2 defvar

image.png

defvar声明变量,若是声明的变量已经存在,则不会改变原值

因为lisp中的函数都是全局的,致使setq定义的变量也容易变为全局变量,

若是想要查看变量是否已经存在,能够经过c-h v查看是否已经定义

5.3 let

lisp中可使用 let指定局部做用域的变量

image.png

这时候,局部变量 pi, area 定义在函数 circle-area中,经过c-h v没法查看变量

5.4 let*

let*let的使用方式相同,惟一区别是:

let*中可使用以前定义的局部变量

image.png

6、lambda 表达式

image.png

6.1 定义时候直接调用

image.png

6.2 lambda表达式赋值为变量

image.png

7、控制结构

7.1 顺序执行

image.png

7.2 条件判断 if

image.png

7.3 条件判断 cond

image.png

7.4 循环 while

image.png

7.5 逻辑运算

image.png

相关文章
相关标签/搜索