[asdf-devel] Question about use of :unspecific

Robert Goldman rpgoldman at sift.info
Tue Mar 16 03:26:50 UTC 2010


On 3/15/10 Mar 15 -10:06 PM, Faré wrote:
> On 15 March 2010 22:58, Robert Goldman <rpgoldman at sift.info> wrote:
>> Isn't supplying :unspecific as the value of :type always to be avoided?
>>
>> The CLHS says:
>>
>> "Portable programs should not supply :unspecific for any component."
>> [documentation for function MAKE-PATHNAME]
>>
>> and in section 19.2.2.2.3 :UNSPECIFIC as a component value
>>
>> "A conforming program must never unconditionally use a :unspecific as
>> the value of a pathname  component because such a value is not
>> guaranteed to be permissible in all implementations."
>>
>> So instead of supplying this for a couple of cases and then trying to
>> avoid it for others, shouldn't we be avoiding it altogether?
>>
>> I confess that I don't fully understand this issue, since it seems like
>> the CLHS makes it clear that NIL is /not/ fully equivalent to
>> :unspecific (since the latter is not "overwritten" in a merge), and yet
>> tells us not to use the latter....
>>
>> If anyone can clarify this, it would be great....
>>
> 
> Oops. I hadn't paid attention to this paragraph.
> Should we use :unspecific based on a whitelist of known-working
> implementations, or should we just avoid it altogether?

Either of those seems OK to me.  I think a blacklist is probably wrong,
just because it's too hard to update.

OTOH, I don't really understand the motivation in two places here:

1.  I don't understand the rationale for the prohibition in the CLHS
(probably someone from one of the implementation groups can say
something about this) and

2. I don't know the rationale for returning it from SPLIT-NAME-TYPE.  I
understand that :unspecific has different behavior under merging (which
is why I don't understand why it's forbidden), so it seems like one of
two things should be the case:

   a.  if you can return NIL for clisp and ABCL, it should be possible
to return NIL for all the other implementations or

   b.  if returning :unspecific is necessary for some implementations,
shouldn't returning NIL on CLISP And ABCL fail?

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).

Can you clarify?

thanks,
r




More information about the asdf-devel mailing list