[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