id:reinyannyan:20070416:p1 (簡易クロージャの実装) で、変数の値を関数式の中にインライン展開することで擬似クロージャを作成する方法を考えました*1。今回はその応用編です。 savehist-mode を有効にして、ミニバッファの入力履歴を Emacs セッションを通じて記憶しておく、というケースを題材にします。 保存された履歴ファイル (~/.emacs.d/history) を眺めてみると、入力内容に重複があることに気付きます。 まずは単純に重複を削除することを思い付くんですが、それだけだと compose や curry の出る幕はありません。 そこで、ファイル名の履歴に注目してみると、入力内容に特徴的なばらつきがあることが分かります。 例えば、ディレクトリ名がスラッシュで終わっていたりいなかったり、"~/.emacs" を "~/work/../.emac