On 3 October 2010 17:18, Dave Penton djp@arqux.com wrote:
A manual section on the semantics of defsystem is sorely needed. I am fairly new to Common Lisp (one year). Like most developers I need some kind of system definition facility but find myself a bit exasperated learning to use asdf.
There is no well-defined semantics beyond what the code does. What do you need to learn that isn't covered by the manual?
My opinion (expressed with gratitude for the efforts of developers and documenters of asdf) is that Chapter 5 talks all around the thing that I most want to know, viz. "What does defsystem do?"
It builds an object of class SYSTEM that describes your system and can be used by other methods. Semantically, it does nothing. Syntactically, it translates from human-friendly syntax to computer-friendly structures, with a few trivial normalizations along the way.
After a couple of examples, probably the manual should then contain an informal description of defsystem semantics. I know, of course, that it means to allow one to define a "system." But how? What is the strategy, and how do the bits of the defsystem form implement that strategy?
Defsystem has no strategy whatsoever. It just recurses through the syntax to build a DAG as obviously specified by the user. All the "logic" is in OPERATE and the TRAVERSE infrastructure it uses. See notably section 2 of our ILC2010 paper: http://common-lisp.net/project/asdf/ilc2010draft.pdf
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] God gave me brains so that I use it, and appreciate his work with the eyes of a critic and a connoisseur; not so that I behave like a fool, and believe the twaddles of the first come prophets and priests. — Faré