Faré wrote:
>> This resolve-dependency-spec returns the actual system objects for depended 
>> on systems, doesn't it?  Hence the possible side effects.
>>
> Yes.
>
>> I was thinking of the much simpler expedient of traversing the dependency 
>> s-expressions and using COERCE-NAME on all the system names.  That gives us 
>> something that is canonical, but that functions when there are missing 
>> systems (e.g., this system weakly-depends-on <that>, but <that> isn't 
>> present), and is computed without side-effects.
>>
>> I just felt like fixing this in ASDF would be better than requiring the 
>> caller to do it.
>>
> You could do that in the common case, I suppose, but the user would
> still have to call resolve-dependency-spec in the general case, since
> the protocol is extensible. Making it appear like the name has been
> resolved when it hasn't been is probably a lure that will invite
> people to do the wrong thing and get bitten — more efforts for
> negative return on investment.

Hmmmm....
The thing I don't like is to have some large number of half-baked bits of code 
that all do some buggy bit of tree recursion to make sure that they recognize 
that

:depends-on (foo) ; foo in some package
:depends-on ("foo") ; string
:depends-on (:foo) 

are all the same thing.  Failing to do that for the caller seems like we are 
providing a bad API.

I figured since "foo" is the internal form, (list "foo") should be the return 
for all three of the above cases.

If you call resolve-dependency-spec on

:weakly-depends-on (:blort)

when blort isn't present, don't we get a bad result that foils the intent of 
using system-weakly-depends-on as an introspection tool?

Thanks,
r


Reply via email to