【发布时间】:2013-04-01 21:51:19
【问题描述】:
正如锡上所说,elisp 中的.(句点)符号引用了什么?我在 Emacs 文档中找不到变量引用,而且 Google(不出所料)没有帮助。
【问题讨论】:
正如锡上所说,elisp 中的.(句点)符号引用了什么?我在 Emacs 文档中找不到变量引用,而且 Google(不出所料)没有帮助。
【问题讨论】:
句点是cons 运算符,而不是lisp 意义上的符号。例如:
(setq nums '(1 . 2))
这相当于:
(setq nums (cons 1 2))
【讨论】:
C-h i g (elisp) Dotted Pair Notation RET。我认为 Clojure 在这方面是一个例外——我的理解是大多数 lisp 都能识别这种表示法。
. 不像具有中缀语法的语言那样是中缀运算符——例如,你不能写 (foo . bar . baz)。相反,(form1 . form2) 是创建 conses 的基本语法,类似于 (form1 form2 form3...) 是在 clojure 和 elisp 中创建列表的基本语法。不同之处在于,在 elisp 中,(1 2 3) 是 (1 . (2 . (3 . nil))) 的语法糖。为什么 clojure 选择省略创建 cons 的语法并不是很明显。
cons 函数,但它不支持点对符号。