Show-ing GHC internal data structures

I'm working with a friend on a project that involves hacking at the GHC internals. We'd like to be able to print some of the large data structures involved -- specifically a TcGblEnv. TcGblEnv is a record with a number of fields of different types, and it would be silly to go through the source adding "deriving Show" to the end of each type definition. It seems like Show instances for internal data structures would be useful for the GHC developers (for debugging purposes -- perhaps they were left out of the GHC distribution to keep the compiled code small?), and we were wondering if anyone had the relevant instance declarations lying around. Thanks, David

David William Simmons-Duffin wrote:
I'm working with a friend on a project that involves hacking at the GHC internals. We'd like to be able to print some of the large data structures involved -- specifically a TcGblEnv. TcGblEnv is a record with a number of fields of different types, and it would be silly to go through the source adding "deriving Show" to the end of each type definition.
It seems like Show instances for internal data structures would be useful for the GHC developers (for debugging purposes -- perhaps they were left out of the GHC distribution to keep the compiled code small?), and we were wondering if anyone had the relevant instance declarations lying around.
The TcGblEnv is Very Large Indeed. It probably includes almost everything in the heap :-) I suggest you selectively print out the bits you're interested in, there is plenty of pretty-printing machinery in GHC for displaying the contents of internal stuff. Also, in GHC we generally don't use Show. There is a class Outputable (utils/Outputable.lhs) which many datatypes are instances of, and it provides for pretty-printing data in several different "styles": debug, user, code, etc. Cheers, Simon
participants (2)
-
David William Simmons-Duffin
-
Simon Marlow