[racket] module browser
Thanks, Ryan, that info is helpful, although it's missing most of the
reasons I've had to partition one library into several modules (macro
transformers).
As people have mentioned before, there seems to be a theoretical brick
wall preventing these tools from seeing references that likely will be
used in the results of macro transformations. I don't understand that
in all cases. For one example, the transformers often have templates
that should know many of the symbols and exactly where they're coming
from. (Is this information from templates lost too soon? Is the
information from templates not as precise as I assumed?) For another
example (or possibly the same thing), these tools seem to be missing
references in the code of "syntax-parse" productions that is outside
templates and that I'd think is unambiguous.
BTW, a student who is bored over the summer could do worse than to
enhance the Module Browser in some other ways. First low-hanging fruit
step might be to put the information from "check-requires" into tooltips
on the arrows. Then there's a lot one could do with graph drawing.
And, as a small graphics tweak, you can make it skip redundant repaints
queued up when dragging. (Summer is good for this. More than a little
sun exposure will just age your skin prematurely and give you melanoma,
anyway.)
Neil V.
Ryan Culpepper wrote at 05/23/2012 02:28 PM:
> On 05/23/2012 11:13 AM, Neil Van Dyke wrote:
>> In the Module Browser, has anyone tried annotating the graph edges with
>> imported symbols that are actually referenced by the importing module?
>> Maybe further annotate those symbols with phases?
>
> You can get this information (in text form) from the check-requires
> utility. You may find the code in
> macro-debugger/analysis/check-requires (and its dependencies) useful
> if you want to add this information to the module browser. Getting the
> set of references is actually somewhat tricky, and I think my code
> does as good a job as possible.
>
> Ryan
>