ASDFではソースファイルを扱うためにいちいちコンポーネントとして登録する必要があり、ディレクトリ中のすべてのソースファイルをまとめて扱うという機能がない。これはpackage-inferred-systemを使った場合も同じで、ASDFが.asdファイルから特定のソースファイルに辿りつくためにはどこかでファイル名を指定する必要がある。この点について、ASDFの拡張を考える。
最初にpackage-inferred-systemを使わない場合(例はfoo.asd)を扱い、その後でpackage-inferred-systemの拡張(例はfoo-infer.asd)について検討する。
このようなコンポーネントはmodule
のサブクラスとして簡単に書ける。ただ、foo.asdでの実装はやや単純すぎるか。実用するとしたら、初回のcomponent-children
の呼び出しでchildren
スロットに結果を保持しておき、2回目以降は、既存のcl-source-file
については新しいオブジェクトを作らないようにするべきだろう。
:recursive t
オプションで、直下だけでなく再帰的にソースファイルを収集するというデザインもありかもしれない。