Emacsには、リストをソートするための関数があり、(ご想像の通り)sortと呼ばれています。sort関数は、ソート対象のリストと、2つのリスト要素のうち前者が後者より小さいかどうかを判定する述語という2つの引数を取ります。
前述の通り(不適切な型のオブジェクトを引数として使用するを参照)、述語とは、あるプロパティが真か偽かを判定する関数のことです。sort 関数は、述語が使用するプロパティに基づいてリストを並べ替えます。つまり、sort
を使えば、数値以外のリストを数値以外の基準でソートできるということになります—例えば、リストをアルファベット順に並べ替えることが可能です。
< 関数は、数値のリストをソートする際に使用します。 例えば、
(sort '(4 8 21 17 33 7 21 7) '<)
以下を生成します:
(4 7 7 8 17 21 21 33)
(なお、この例では、引数がsortに引数として渡される前にシンボルが評価されないよう、両方の引数がクォートされています。)
recursive-lengths-list-many-files
関数が返すリストのソートは簡単で、< 関数を使用します:
(sort
(recursive-lengths-list-many-files
'("./lisp/macros.el"
"./lisp/mailalias.el"
"./lisp/hex-util.el"))
'<)
これにより生成されます:
(29 32 38 71 82 90 95 178 180 218 263 283 321 324 480)
(なお、この例では sort の第1引数にクォートが付いていないのは、sort に渡されるリストを生成するように式を評価する必要があるためです。)