I believe by adding a little bit more hair (a test that a component IS a
module and IS NOT a system) to the TRAVERSE structure, I can salvage
INTRA-system dependencies involving modules without trying to fix
INTER-system dependencies, which seems like too big a bite to chew off.

What would people think about that?

I'm afraid, pace James A, that this won't make the code a lot simpler or
more elegant, but it will make the behavior more predictable, which is a
Good Thing.

This exhibits a Common Lisp hassle pattern I have written myself into
far too often --- you make a class (in this case system) inherit from
another class (in this case module), and later on find that you should
have built a triangular relationship between module, system and a common
superclass.

Introducing that common superclass is often quite painful....

In this case, I think backward compatibility rules out this kind of
refactoring (impossible to tell whose system subclasses you might
break), so the best we can do is put on some inelegant band-aids like

(when (and (typep x 'module) (not (typep x 'system))
 ....)

cheers,
r

_______________________________________________
asdf-devel mailing list
asdf-devel@common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel

Reply via email to