# recover-rtti Recover run-time type information from the GHC heap. The key function in this library is ```haskell classify :: a -> Classifier a ``` which recovers type information about values about which we know nothing (in particular, no type class constraints). One example use case is the following `anythingToString` function: ```haskell anythingToString :: a -> String ``` We test that the result of `anythingToString` is equal to the result of regular `show` for a large range of data types (including user-defined ones that the library is not aware of). There are also other possible use cases; for example, it should be possible to define an `anythingToJSON` function. Obviously there are limitations; the most important ones are: * `UNPACK`ed fields are invisible to the library. This does not need to be a major issue though, when compiling code with `-O0` fields are not unpacked. (https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/exts/pragmas.html?highlight=unpack#nounpack-pragma) * Record field names are not known, and so records are shown just using the constructor. There may be other gotchas as well; this library is primarily intended for debugging.