2011-03-16 95 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, 而其他一些数据对象(这也不是一个缺点,或者首先提到的缺点不会是清单的最后一个缺点)。

这允许例如指定其最后利弊是一个符号列表,然后这个符号可以指向另一个列表,运行时的变化等