Emacs-Lisp 列表、撇号 (') 和反引号(重音符,`)

leg*_*lla 2 emacs list

我是 emacs 新手,正在学习本教程:https : //learnxinyminutes.com/docs/elisp/

我写了这段代码:

(defun hello (name)
  (insert (format "Hello %s!\n" name)))

(setq list-of-names '("John", "Jane", "Chad")) ;; -1-

(mapcar `hello list-of-names) ;;-2-
Run Code Online (Sandbox Code Playgroud)

当我在第 2 行执行 C-xC-e 时,结果如下:

Hello John!
Hello (, Jane)!
Hello (, Chad)!
Run Code Online (Sandbox Code Playgroud)

所以我查了一下撇号的作用,这是引用的简写。

    (setq list-of-names (quote("John", "Jane", "Chad"))) ;; -1-
Run Code Online (Sandbox Code Playgroud)

结果是一样的。但是,当我不小心用重音符(`,或键盘中的 SHIFT + ~)替换撇号时,它会正确打印出来。

Hello John!
Hello Jane!
Hello Chad!
Run Code Online (Sandbox Code Playgroud)

我花了一个小时来查找重口音的作用,但到目前为止还没有运气。有谁知道emacs中的重口音是什么意思?

我正在使用带有韩语/英语键盘的 emacs-w32。

cho*_*oba 5

`类似于',但是当您可以使用,前缀不会被引用的符号时。请参阅 Elisp 手册中的“反引号”。

lisp 中的列表不是逗号分隔的。

(setq list-of-names `("John" "Jane" "Chad" ,(current-time-string)))
(mapcar 'hello list-of-names)
Run Code Online (Sandbox Code Playgroud)