Emacs Lisp マニュアルには、関数 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
ます。