Cliki の current recommended libraries*1 のひとつである、パスネーム可搬ライブラリ、CL-FAD の説明を訳した。てきとー訳なので、間違っていたら許してほしい。ツッコミ歓迎。

元はこちら。http://weitz.de/cl-fad/

別の方の紹介。http://sakito.jp/cl/cl-fad.html



パスネームとは、CLにおいてファイルの名前を表すためのクラスであり、DIRECTORY, NAME, TYPE, DEVICE, HOST, VERSIONの6つのスロットを持つ。PATHNAME 関数を呼び出すことで、文字列からパスネームのインスタンスを作ることができる。

DIRECTORY にはファイルを含むディレクトリがリストで保存され、 NAME にはファイル名、 TYPE には拡張子、 HOST か DEVICE にはドライブレターが入る（Windowsの場合）。かつてバージョンを管理していたファイルシステムがあったため VERSION スロットが存在するが、今では滅多に使われない（らしい）。これにより、ファイルシステムに依存しない形でファイルのパスを表現できる。

シンボリックリンクの解決のようなファイルシステムレベルでの変換をすべて実行したパスネームを『真の名前』という。

ディレクトリには2つの表現方法がある。WindowsおよびUNIXシステムにおいて、ディレクトリは特殊なファイルでもあるので、もっとも内側のディレクトリの名前を NAME に入れることもできるし、NAME に何も入れずにすべて DIRECTORY スロットに入れることもできる。前者の形式をファイル形式と言い、後者の形式をディレクトリ形式という。これらが混在すると困ったことになる。

CL-FADでは、ファイル形式とディレクトリ形式を相互に変換し、またあるパスネームが指すディレクトリが存在するかどうかをテストする述語を提供することで、この問題を回避する。