Reifies arbitrary terms into types that can be reflected back into terms
Description
This package addresses the "configuration problem" which is propagating
configurations that are available at run-time, allowing multiple configurations
to coexist without resorting to mutable global variables or
'System.IO.Unsafe.unsafePerformIO'.
That package is an implementation of the ideas presented in the paper
"Functional Pearl: Implicit Configurations" by Oleg Kiselyov and Chung-chieh
Shan (<http://okmij.org/ftp/Haskell/tr-15-04.pdf original paper>).
However, the API has been streamlined to improve performance.
There are a handful of tutorials on how to use this library:
* Austin Seipp's tutorial
<https://www.schoolofhaskell.com/user/thoughtpolice/using-reflection Reflecting
values to types and back> provides a summary of the approach taken by this
library, along with more motivating examples.
* Arnaud Spiwack's tutorial
<https://www.tweag.io/posts/2017-12-21-reflection-tutorial.html All about
reflection> explains how to use this library.