packages feed

recover-rtti-0.4.1.0: README.md

# recover-rtti

Recover run-time type information from the GHC heap. The key function in this
library is

```haskell
classify :: a -> Either Closure (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.