Я являюсь Emacs новичком и собираемся через этот учебник: https://learnxinyminutes.com/docs/elisp/Emacs-Lisp списки, апостроф ('), и кавычка (апостроф, `)
Я написал этот код:
(defun hello (name)
(insert (format "Hello %s!\n" name)))
(setq list-of-names '("John", "Jane", "Chad")) ;; -1-
(mapcar `hello list-of-names) ;;-2-
и когда я сделал C-хс-е в строке 2 результат вышел как:
Hello John!
Hello (, Jane)!
Hello (, Chad)!
так что я посмотрел, что апостроф делает и это короткая рука для цитаты.
(setq list-of-names (quote("John", "Jane", "Chad"))) ;; -1-
и результаты оказываются одинаковыми. Но когда я случайно заменил апостроф серьезным акцентом (`или SHIFT + ~ на моей клавиатуре), он напечатал правильно.
Hello John!
Hello Jane!
Hello Chad!
Я потратил час, посмотрев, какой серьезный акцент, но пока не повезло. Кто-нибудь знает, что означает серьезный акцент в emacs?
Я использую emacs-w32 с корейской/английской клавиатурой.
FYI: 'M-x elisp-index-search RET \' RET' (один из «самодокументирующих» аспектов Emacs). Напечатайте 'C-h i h', чтобы научиться использовать считыватель Info - это принесет огромные дивиденды. – phils
Ваше первое недоразумение, и самое главное, состоит в том, как ** список ** элементов разделен в Lisp: используйте пробелы, а не запятые. Второй заключается в том, что backquote вводит специальный контекст, в котором запятая имеет особое значение. – Drew