Diego and I seek your comments on the following (loose) proposal.
It is sometimes hard to remember which printing function is used for debugging a type, or even which type you have. We propose to rely on overloading to unify the interface to a small set of function names. Every major data type should have associated debug/dump functionality. We will unify the current *_dump/*_debug functions under the same common overloaded name. We intend to only apply this approach to functions that take the type to display as an argument, and that are routinely used in debugging. We propose to provide several function overload sets, as below. dump_pretty This function overload set provides the bulk of the printing. They will use the existing pretty-printer functions in their implementation. dump_raw This function overload set provides the raw oriented dump, e.g. a tuple. dump_verbose This function overload set provides the extra details dump. All of these functions come in two forms. function (FILE *, item_to_dump, formatting) function (item_to_dump, formatting) If the FILE* is not specified, the output is to stderr. The formatting argument is optional, with a default suitable to the kind of item to dump. We should remove tree-browser.c. It is not used at all and it is likely broken. -- Lawrence Crowl