On 2010-03-16, at 04:32 , Faré wrote:
[ ... ]
It seems like either these pathnames are never subjected to MERGE-PATHNAMES, in which case we can just always return NIL, or they /are/ sometimes subjected to MERGE-PATHNAMES, in which case sometimes the use of NIL instead of :unspecific will cause oddities (unless the default type is always empty).
Using :UNSPECIFIC seemed like it might produce more robust code. But now that I realize the unportability, I don't care as much.
SBCL, CCL and LispWorks all pass janderson's tests just as well with either NIL or :UNSPECIFIC. Haven't counted failures in other implementations.
past experience with pathname portability led to the proposed patch to the pathname merge operator to construct a contingent argument list to make-pathname. where no component is to be specified, none is passed to make-pathname. if the context is such that one does not need to block a default component, that tactic should be sufficient.
my recollection is that it worked for all tested implementations.