Eduardo Cavazos wrote:
Eduardo Cavazos wrote:
- Source location information (file (at least) and line/column) for
procedures, variables and modules.
- List of symbols bound in a given module/environment, preferably with
their kind (procedure, macro, variable...) and visibility (exported,
private, imported...)
- List of callers/callees of a given procedure.
- If the system supports generic functions, list of methods for a given
generic, preferably accompanied by their location.
- Procedure/generic/macro arities, with the actual names of the
parameters if possible (not just a number).
- Docstrings (if supported) or any other output of a help-like command.
You know, now that I have more experience with R6RS libraries, it seems
like alot of this can be had simply by doing source analysis of the
libraries themselves. All you need is a list of the repositories; (e.g.
via library-path in Ikarus).
However, stuff like this still seems tricky to solve via source analysis:
(define (mkultra val)
(cond ((number? val) val)
(else
(lambda ()
val))))
(define mind-control (mkultra 'abc))
I.e. in order for Geiser to recognize that mind-control is a procedure,
it's going to have to get into the business of Scheme evaluation. So
maybe some introspection is needed for the general case after all?
Ed