On Thu, Mar 22, 2012 at 02:05, Dmitriy Ivanov divanov11@gmail.com wrote:
An object-oriented basis for handling operations is a bright idea. But it makes many things too complicated and gives no answer to theoretical problems like the above (are (c . o1) and (c . o2) the same action?). I wonder if it provides much benefit in practice.
CL evolved before programming language people started insisting on clean semantics. When each and every CONS is stateful, not to mention objects, the meaning of "the same" becomes moot. See the classic hbaker essay on equality.
It seems that using keyword designators like :compile-op, :load-op and the like and methods with the eql specializers would be enough to many applications. And accompanying all the methods with an additional parameter to pass operation properties (or make them accept key arguments). That is the way some old defsystem libraries are doing.
I have read about them, but I have no working experience with old defsystem libraries.
Another question I have got is the relationship between ASDF and LispWorks defsystem rules. LW definitions are quite obvious.
:caused-by If any of dependee actions are already in the current plan (as a result of other rules executing successfully, or as a result of default system behavior), they trigger successful execution of this rule, i.e. the operation on the target component.
:requires The actions that need to be performed before the rule can execute successfully. This is a list of operation-component descriptions that should be planned before the action on the target component.
In my understanding, ASDF :in-order-to is equivalent to :caused-by, and :do-first is equivalent :requires. Is this correct?
Sounds about right.
I would even rename the ASDF ones to match the LispWorks name, if I were sure to fix all the references (Are there any beyond ASDF and POIU?).
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Schemer: "Buddha is small, clean, and serious." Lispnik: "Buddha is big, has hairy armpits, and laughs." — Nikodemus Siivola