emacs lisp 語言基本概念

2022-08-30 08:00:15 字數 2578 閱讀 5028

1. 列表

用空格分開,以圓括號括起來的單詞,數字或者其它列表,如(+ 1 2)或者包括子列表的列表(+ 1 (+ 2 3))。

列表是emacs lisp(簡稱elisp)的基礎,所有的程式都是由列表組成的。在elisp裡,資料和程式都是以同樣的

方式表示。

2. 原子

在elisp中不可再分為更小的部分的東西稱為原子,比如數字,單詞,字串,elisp的原子種模擬較少,一般用到

的也就這幾種,列表由三種組成方式,由原子組成,由列表組成,由原子和列表組成,沒有任何原子的列表()稱為空

列表,它比較特殊,即是原子又是列表。

3. 符號表示式(symbolic expression)

原子和列表的書面表示都被稱為符號表示式。在elisp的列表中的空格數量可以任意,所以我們可以使用空格來排版

列表使我們易於閱讀

4. 表示式求值

表示式求值遵循下面簡單的規則

- 對數字求值就是它本身

- 對雙引號括起來的字串求值就是它本身

- 對乙個符號求值將返回它的值

- 對乙個列表求值,從左往右掃瞄列表,查詢繫結在第乙個符號上的函式定義,執行該函式定義,列表剩下的全部符號

作為該函式的引數,如果剩下的符號中還有列表,遞迴的使用本規則進行解析。

- 單引號告訴elisp返回表示式的書面形式,而不是對它求值,如'test返回test本身,而不是test變數的值

- 對乙個函式求值總是返回乙個值(除非返回乙個錯誤資訊),但是很多時候我們真正需要的其實是函式的附加效果,

如(next-line)我們對返回值其實不關心,我們想要的是附加效果。在其他一些語言中需要返回值的叫做函式,需要

附加效果的叫做過程。在elisp中我們不區分這兩者

- 特殊列表

特殊列表是求值方式或者目的和前面的列表求值有差異的列表,其實總體來說就是其它語言中的語法規則,在第5節中

介紹5. 特殊列表

- 給變數賦值

用得最多的有四種

- set

語法為(set 'flowers '(rose lily)),將flowers繫結到列表(rose lily)上。

- setq

和set基本一樣,除了第乙個引數不用加單引號,elisp自動給你加上單引號,使用方法為(setq flowers '(rose lily)),

效果和上面的set是一樣的,但是使用setq可以同時對多個變數賦值,第乙個引數繫結第二個引數,第三個繫結第四個,以此

類推。如(setq flowers '(rose lily) trees '(oak maple))

- let

let其實是使變數本地化,這樣在let範圍以外看不到let裡定義的變數,語法為

(let varlist body)

其中第二個部分varlist為乙個列表,表示變數定義,可以是單個原子,賦值為nil,也可以是乙個兩個部分組成的列表,表示

第乙個符號繫結在第二個符號求值後的結果上。第三部分為任意列表組成。

這個和其它語言中稱為語句塊很相

- 函式定義

用於定義函式,語法如下

(defun function-name (arguments)

"optional documentation"

(interactive arguments-passing-info)

body)

函式定義由五部分組成:

- 符號名,這個函式定義要繫結的符號

- 傳送給函式的引數列表,可以為空列表,表示沒有引數

- 描述文件,是可選的,但是最好認真填寫

- 是乙個函式成為互動函式的表示式,是可選的,沒有是乙個函式,有是乙個命令。命令表示可以在emacs裡使用m-x呼叫,或者

繫結鍵以後使用按鍵呼叫

- 函式定義的內容,該函式完成任務的**。

函式的安裝,如果是單個函式的安裝可以在函式的最後乙個括號後c-x c-e安裝

對於乙個檔案的安裝 m-x load-file ret filename ret 安裝整個檔案裡的函式

要想在每次啟動emacs都自動安裝,將函式定義放在.emacs裡或者init.el裡,這是最簡單的方法,具體細節在以後再介紹

- 控制結構

- 條件控制

條件控制的語法如下

(if (condition)

then-part

else-part)

if條件控制由三個部分組成:

- 條件判斷列表,對條件進行測試,返回值為nil或者其它代表t的值,elisp中只有空列表()或者nil表示假,其它所有的值都

表示真。

- then-part是乙個列表,當條件為真時執行。如果要執行多個列表,使用progn特殊表將多個語句包起來一起執行

- else-part是可選的,當條件為假時執行。和then-part一樣,要執行多個語句,使用progn特殊表

- 迴圈結構

迴圈結構的語法如下:

(while (condition)

body)

迴圈結構由兩部分組成,條件列表部分,每次開始執行時判斷條件是否為真,當條件為真時執行body裡的所有語句一次,然後再次判斷

條件是否為真,繼續執行body,直到條件為假為止。

C語言 基本概念

c語言的基本概念 1.格式 型別修飾符 變數名初始值.2.定義變數規則 1 不能以數字開頭.2 由下劃線,字母,美元符,數字組成.3 變數名不能重複.4 不要以拼音命名,特別是拼音簡寫.5 駝峰結構 駝峰命名法.6 不能與系統保留字重名.3.編寫 規範 操作符兩個由空格,逗號後面乙個空格.練習1 定...

C語言基本概念

bit 中文名稱是位,音譯 位元 是用以描述電腦資料量的最小單位。二進位制數系統中,每個0或 1就是乙個位 bit bit縮寫為b。位元組 byte 是計算機 資訊科技 用於計量儲存容量和傳輸容量的一種計量單位,乙個位元組等於8位 二進位制數 byte 縮寫為b 1kb 1024 bytes 102...

C 語言基本概念

類 具有同種屬性的物件稱為類,是個抽象的概念。比如說 汽車 人 狗 神 物件 日常生活中的所有東西都是物件,是類的例項化。比如說 推土車是汽車的例項化 姚明是人的例項化 小白 狗的名字 是狗的例項化 二郎神是神的例項化 屬性 用來描述具體某個物件的特徵的是屬性,是靜態的。比如 姚明身高2.6公尺多 ...