2011-03-16 93 views
12

下面是一些DOCO我創建,但...什麼是點在以下emacs的命令意味着

我不知道什麼是點「」所述延伸部和所述模式之間是 因爲雖然在以下:


文件關聯

實施例:*.mmdmarkdown-mode

 (setq auto-mode-alist (cons '("\\.mmd$" . markdown-mode) auto-mode-alist)) 

基本上有一個ALIST(締列表/散列表)稱爲 auto-mode-alist。這點擴展 - >模式。擴展看起來像是一個正則表達式,它是 。

cons是預暫時擱置的元素列表的功能

setq意味着引用集(它引用的自動模式列表你),否則 而不是分配給符號自動模式ALIST ,您將分配給 評估該符號的結果...不是您想要的結果;)

回答

10

列表由Lisp中較小的部分構建。點符號表示這些小塊。

(a b c d e)      ; a normal list 
(a . (b . (c . (d . (e . nil))))) ; the same list in primitive form 

形式的項(a . b)語法稱爲cons單元; a汽車bcdr。 (這些最後的術語來自用於存儲它們的寄存器名稱,Lisp最初是在其開發的基礎上開發的,並且沒有其他意義。缺點是「構造」的簡稱。)缺陷單元 s使用cons函數創建。請注意,預先考慮列表的行爲自然不屬於列表的內部格式,如上所示,並且附加到列表cons的列表不會執行人們可能期望的操作。

ALIST S被歷史慣例平原cons單元 s,而不是完整的列表,最初是爲速度。

+1

** ** ALIST:s的desinged到將一種元素映射到另一種元素。它們不是歷史的神器,它們與速度無關。 – Lindydancer 2011-03-16 10:24:18

+3

@Lindydancer:是的,但alist會和正確的列表一起工作,而不是虛線對,因爲列表中的汽車仍然是關聯的關鍵。因此,對於alist來說,點對可以被稱爲優化,以節省額外nil的空間來結束列表,並且用cadr而不是cdr來訪問該值的時間將會花費。 – 2011-03-16 13:35:08

+0

要將其稱爲優化,您必須首先從通常使用的東西開始。包含雙元素列表的列表不屬於該類別,對不起。 – Lindydancer 2011-03-16 14:48:16

10

其虛線對符號。請參閱this link以作進一步參考。

10

在LISP,在低電平,則可以有一個簡單的值(數字或原子)或點對,或缺點細胞。 (讓我們忽略像矢量這樣的現代化東西......)。除此之外,還構建了像列表(a b c)這樣的數據結構。

一種ALIST關聯列表,是一個普通的列表,其中每個元件本身(ab et.c.)是點對。例如:

((foo . 10) (bar . 20)) 

可以使用assqassoc搜索的ALIST,返回一對。您可以分別申請carcdr以獲得該對的左側或右側部分。

平紋列表構造巧妙的上方,使得(a b c)被表示爲(a . (b . (c . nil)))典型地,一個不必知道這對理解ALIST:S,但內部打印機構有時拋出的。具體而言,((foo . nil) (bar . 20))通常打印爲((foo) (bar . 20))

1

This也是一個很好的描述,本質:

的虛線名單是一個其最後利弊沒有零爲其CDR, 而其他一些數據對象(這也不是一個缺點,或者首先提到的缺點不會是清單的最後一個缺點)。

這允許例如指定其最後利弊是一個符號列表,然後這個符號可以指向另一個列表,運行時的變化等