В Emacs lisp manual состояния о функции nconc, что:Какой смысл строить список с хвостом без списка?
Так как последний аргумент nconc сам по себе не изменяется, то целесообразно использовать постоянный список, например, «(4 5), как и в приведенном выше примере , По той же причине, последний аргумент не должен быть список
И действительно, я могу написать
(setq x '(1 2 3))
=> (1 2 3)
(nconc x 0)
=> (1 2 3 . 0)
но дает совершенно разбитое список:
(length x)
=> eval: Wrong type argument: listp, 0
(butlast x)
=> butlast: Wrong type argument: listp, 0
- Как может Я извлекаю исходный список?
(reverse (cdr (reverse '(1 2 3 . 0))))
также не разрезает его. - В каких контекстах это полезный шаблон? В стандартном распределении используются некоторые функции в
minibuffer.el
, в частностиcompletion-all-completions
и тому подобное.
BTW, используя буквальное геодезическую, как ''(1 2 3)', поскольку не последний аргумент для 'nconc' технически не подходит. Буквенные данные считаются постоянными. –