Need help with GHC API and GHC internals
Mark Tullsen
tullsen at galois.com
Fri Aug 1 23:06:00 EDT 2008
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
More information about the Glasgow-haskell-users
mailing list