ディレクトリのリスト表現からパスを生成する - lisp-cookbook-ja/common-lisp GitHub Wiki
make-pathname は:directory引数等で、リスト表現も受け付けますので工夫すれば簡単に書くことが可能です
(defun gen-dirs (dirs subdirs)
(mapcan (lambda (d)
(mapcar (lambda (b)
(make-pathname :directory `(:absolute ,@(mapcar #'string d) ,(string b))
:case :common))
subdirs))
dirs))
(gen-dirs '((usr local) (usr2 local) (usr) () )
'(bin sbin))
;=> (#P"/usr/local/bin/" #P"/usr/local/sbin/" #P"/usr2/local/bin/"
; #P"/usr2/local/sbin/" #P"/usr/bin/" #P"/usr/sbin/" #P"/bin/" #P"/sbin/")