Last update: 2023-12-01

リストをソートする   Emacs EmacsLisp

Emacs Lispでリストをソートする方法。

公式マニュアルから。

(sort '(4 8 21 17 33 7 21 7) '<)
https://www.gnu.org/software/emacs/manual/html_node/eintr/Sorting.html

比較関数を変更すれば文字列などもソートできる。

(sort '("abc" "def" "abb") 'string<)
abb abc def

なお、sortを実行すると元の配列を破壊するようだ。

(let ((l '(4 3 1 2)))
  (sort l '<)
  l)
4

引き続き変数を使いたい場合は次のように再代入する必要がある。

(let ((l '(4 3 1 2)))
  (setq l (sort l '<))
  l)
1 2 3 4