I'm attempting to write a call-graph generator for Haskell using the GHC
API. I.e., for each top level value definition, I want a list of the top-level
names used in the definition.

Using GHC API, once I have a 'CheckedModule', I have a dilemma:
 a) If I use this field
      parsedSource :: ParsedSource
I've got a giant AST that I need to traverse for names, there being no
    help in the compiler to do so, AFAIK.
 b) If I use this field
      coreBinds         :: Maybe [CoreBind]
although I've got a simpler type to deal with, and some useful functions
    (e.g. exprFreeNames), I believe I'm now swimming in waters a bit
    deep for me or maybe this is just a flawed approach:
- the core bindings created do not correspond exactly to the bindings
        in the source and 'exprFreeNames' is acting in surprising ways.
      - etc, etc.

Does anyone have any advice for me here? Is there some way I can get approach (b) to work without becoming a wizard in GHC internals? Is there anything I'm
missing?

Thanks,

Mark

_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to