Show-ing GHC internal data structures

Simon Marlow simonmarhaskell at
Tue Mar 21 06:45:40 EST 2006

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.


More information about the Glasgow-haskell-users mailing list