* Tobias C. Rittweiler [2008-02-22 20:50+0100] writes:
I'd like to specify that a DSPEC is either
a symbol, or
a list where the CAR is the defining symbol (DEFVAR for variables, DEFUN for function, &c.) that resulted in the respective definition, the CADR is the name of the thing, and optionally there's an extra description as the rest argument (specializing arglist for methods, for instance.)
Furthermore, I'd like to explicitly validate this with a DESTRUCTURE-CASE such that each backend implementator can directly see what's expected.
Opinions?
Sounds like a noble effort. Both, Lispworks and Allegro have some documentation about dspecs resp. fspecs. That probably counts as previous work, but both seem to be rather ad-hoc. Lispworks' dspecs are even user-extendable, so validating the result isn't that easy. Moreover, CMUCL/SBCL return compiler internals like transformation and type propagation rules. Not to mention that that some implementations return nothing at all. It's not easy to generalize without allowing implementation specific extensions.
Currently, we use the dspec part only for display purposes. It would be good to find a useful application for these dspecs before spending too much time on them.
Helmut.