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

ftr*_*ers 15 lisp emacs elisp

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

我不确定点是什么'.' 扩展和模式之间的关系如下:


文件关联

例如:关联*.mmdmarkdown-mode:

      (setq auto-mode-alist (cons '("\\.mmd$" . markdown-mode) auto-mode-alist))
Run Code Online (Sandbox Code Playgroud)

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

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

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

gee*_*aur 15

列表由Lisp中的较小部分构成.点符号表示那些较小的部分.

(a b c d e)                       ; a normal list
(a . (b . (c . (d . (e . nil))))) ; the same list in primitive form
Run Code Online (Sandbox Code Playgroud)

表单(a . b)语法的项称为cons单元 ; a汽车,bCDr.(那些最后的术语来自用于将它们存储在小型机上的寄存器名称Lisp最初开发的,并且没有其他意义 .cons是"构造"的缩写.) 利用函数创建cons单元cons.请注意,前面列表的行为自然会超出列表的内部格式,如上所示,并且附加到列表中的行为cons将不会执行人们可能天真期望的行为.

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

  • @Lindydancer:是的,但是alists可以和正确的列表一起使用,而不是点对,因为列表中的汽车仍然是关联的关键.因此,alists的虚线对可以被称为优化,以节省额外nil的空间以结束列表,并且使用cadr而不是cdr访问值的时间将需要. (3认同)

Suj*_*joy 12

它是虚线对符号.有关详细参考,请参阅此链接.


Lin*_*cer 11

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

一个ALIST缔列表,是一个普通的列表,其中每个元件本身(a,bet.c.)是点对.例如:

((foo . 10) (bar . 20))
Run Code Online (Sandbox Code Playgroud)

您可以使用assq或搜索alist assoc,返回一对.您可以分别应用carcdr获取该对的左侧或右侧部分.

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