Подтвердить что ты не робот

Что означает точка в следующей команде emacs

Вот некоторые doco, которые я создаю, но...

Я не уверен, что за точка. между расширением и режимом хотя в следующем:


Ассоциации файлов

Пример: связать *.mmd с markdown-mode:

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

в основном есть alist (ассоциативный список/хеш-таблица), называемый auto-mode-alist. Это указывает на расширение → на режим. Расширение выглядит как это регулярное выражение.

cons - это функция, которая предварительно переводит элемент в список

setq означает, что заданный номер (который цитирует вам список автоматического режима), в противном случае вместо присвоения символу auto-mode-alist, вы назначаете результаты оценки этого символа... не то, что вы хотите;)

4b9b3361

Ответ 1

Списки создаются из меньших частей в 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 сокращен для "construct".) Cons cell s создаются с помощью функции cons, Обратите внимание, что поведение для добавления к списку естественно выходит из внутреннего формата списка, как показано выше, и что добавление к списку с cons не будет делать то, что можно было бы наивно ожидать.

Alist s по историческим соглашениям plain cons cell s вместо полных списков, первоначально для скорости.

Ответ 2

Его пунктирная парная запись. Подробнее см. эту ссылку.

Ответ 3

В lisp на низком уровне вы можете либо иметь простое значение (число или атом), либо пунктирная пара, либо cons cells. (Пусть игнорируют современные вещи, такие как векторы...). Кроме того, построены структуры данных, такие как списки (a b c).

А алист или ассоциативный список - это простой список, где каждый элемент (a, b et.c.) - это пунктирная пара. Например:

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

Вы можете искать alist с помощью assq или assoc, возвращается пара. Вы можете применить car и cdr для получения левой или правой части пары соответственно.

Простой список искусно сконструирован выше, так что (a b c) представлен как (a . (b . (c . nil))) Как правило, не нужно знать это, чтобы понять alist: s, но иногда может быть вызван внутренний механизм печати. Конкретно, ((foo . nil) (bar . 20)) обычно печатается как ((foo) (bar . 20)).

Ответ 4

Это также хорошее описание, суть:

Пунктирный список - это тот, чьи последние минусы не имеют nil для своего cdr, скорее какой-то другой объект данных (который также не является минусом, или упомянутые выше минусы не будут последними минусами списка).

Это позволяет, например, указать список, последний минус которого является символом, и этот символ затем может указывать на другой список, изменять во время выполнения и т.д.