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 函數的參數

相關文章
相關標籤/搜索