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

Reply via email to