On Dec 19, 2009, at 12:59 AM, Helmut Eller wrote:
- Terje Norderhaug [2009-12-18 20:32+0100] writes:
[...]
Of particular concern is the DSPEC, which Clozure returns as "#'SWANK- BACKEND:FIND-DEFINITIONS" and LispWorks returns as "(DEFUN SWANK- BACKEND:FIND-DEFINITIONS)". It would be helpful if the DSPEC standardized on the same symbol to denote that the definition is for a function, as in (FUNCTION SWANK-BACKEND:FIND-DEFINITIONS).
To facilitate client side use and flexibility in presentation, I also suggest that the DSPEC is returned as a list instead of as a string, with the type as a symbol and the function name encoded as a string, as in (FUNCTION "SWANK-BACKEND:FIND-DEFINITIONS").
Assigning a standard meaning would be pretty difficult as implementations differ considerably in this area. E.g Allegro has fspecs while Lispworks has dspecs. Fspecs are for functions only but dspecs are indented for all kinds of definitions and new dspecs can be added by users. It's much simpler to treat dspecs as strings and just display them as label.
It is unfortunate that the current definition specs are made to be human readable strings rather than easily digested by lisp code. This simplicity comes with a trade-off in that it limits client-side processing.
Swank should better aid clients like MCLIDE and SLIME in making sense of the definitions from the various lisp implementations. Two potential solutions have been brought up:
1) Swank uses a unified representation of dspecs shared between all lisp implementations. 2) Swank provides clients with lisp implementation specific information to make sense out of different dspecs.
You mention that implementations differ considerably and that it would be hard to standardize the dspecs. What would be concrete cases of dspecs that are prohibitively hard to unify?
-- Terje Norderhaug terje@in-progress.com