以下emacs命令中的点是什么意思

时间:2011-03-16 04:36:01

标签: emacs lisp elisp

这是我正在创作的一些doco,但是......

我不确定点是什么'。'扩展和模式之间是 虽然在下面:


文件关联

示例:*.mmdmarkdown-mode相关联:

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

基本上有一个alist(关联列表/哈希表)被调用 auto-mode-alist。点扩展 - >到模式。扩展看起来 喜欢它是一个正则表达式。

cons是一个将元素预先挂起到列表

的函数

setq表示设置为quoted(为您引用auto-mode-list),否则为 而不是分配给符号auto-mode-alist,你将分配给 评估该符号的结果......不是你想要的;)

4 个答案:

答案 0 :(得分:13)

列表由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汽车b cdr 。 (那些最后的术语来自用于将它们存储在小型机上的寄存器名称Lisp最初开发时,并没有其他意义。 cons 是“构造”的缩写。) cons cell < / em> s使用cons函数创建。请注意,前缀到列表的行为自然会超出列表的内部格式,如上所示,并且附加到带有cons的列表将不会做出可能天真的事情期望的。

Alist 是历史惯例的简单 cons cell 而不是完整列表,最初是为了速度。

答案 1 :(得分:11)

在lisp中,在低级别,您可以使用简单值(数字或原子)或点对,或 cons cells 。 (让我们忽略像矢量这样的现代东西......)。除此之外,还构建了列表(a b c)等数据结构。

alist 关联列表,是一个普通列表,其中每个元素本身(ab et.c.)是一个点缀对。例如:

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

您可以使用assqassoc搜索一个列表,然后返回一对。您可以分别应用carcdr来获取该对的左侧或右侧部分。

上面简单地构造了一个普通列表,以便(a b c)表示为(a . (b . (c . nil)))通常,人们不必知道这一点来理解alist:s,但内部打印机制有时会被抛出的。具体而言,((foo . nil) (bar . 20))通常打印为((foo) (bar . 20))

答案 2 :(得分:10)

它的虚线对符号。有关详细信息,请参阅this link

答案 3 :(得分:1)

This也是一个很好的描述,其实质是:

  

虚线列表是最后一个缺点,其cdr 没有nil,   而是一些其他数据对象(也不是缺点,或者是   首先提到的缺点不是列表中的最后一个缺点。)

这允许例如指定最后一个缺点是符号的列表,然后该符号可以指向另一个列表,在运行时更改等等。