This package provides an implementation of the ideas presented in Functional Pearl: Implicit Configurations by Oleg Kiselyov and Chung-Chieh Shan. However, the API has been implemented in a much more efficient manner.
Contributions and bug reports are welcome!
Please feel free to contact me through github or on the #haskell IRC channel on irc.freenode.net.
Support cross-compilation and unregistered GHC builds.
Fixed typos in the documentation.
Fixed support for GHC 7.0
reifySymbolfor GHC 7.8+, capable of reflecting into the
KnownSymbolclasses respectively for use with other APIs.
lens. This enables us to perform a (less efficient) form of
Renamed the flag for disabling the use of
-f-template-haskellfor consistency with my other packages.
- Builds warning-free on GHC 7.10.
- Added a dynamic FromJSON example.
- Updated the link to the paper.
- More examples.
- We no longer export Show (Q a) for GHC >= 7.4. This was causing random hangs when users tried to somehow run declaration splices from the REPL.
- We no longer depend on tagged for GHC >= 7.8, since
Proxyis now in
- Added a flag to disable
template-haskellsupport for GHC stage1 platforms.
- Added instances of
Changed the behavior of the $(1) template haskell splices for Exp to use a Proxy rather than value-level numbers. This is more consistent with the role of this libraary and the other could always be generated via sa splice anyways.
Added a workaround for changes in the behavior of the internal 'Magic' datatype under the current GHC PolyKinds implementation.
Merged some functionality from Data.Analytics.Reflection. Notably the ability to use type nats to reflect numbers, and to splice numbers directly. This reduces orphan instances somewhat.
Fixed an issue caused by changes in GHC 7.7's typechecker by using explicit
Relaxed an unnecessary strictness annotation in the fast implementation
Both implementations now work on Hugs; the fast implementation ascends from the ranks of completely unportable black magic to being merely /mostly/ unportable black magic.
From 0.5 to 1.1:
- Much faster implementation available that is about 50 /times/ faster than
0.9 and which runs purely on black magic. This version is now used by
default. To turn it off install with the
slowflag. If you encounter a problem with the implementation, please contact the author.
reflectare about 3 orders of magnitude faster than the special case combinators were.
Generalized the type signatures in reflect to allow you to pass any type with kind
* -> *wrapped around the desired type as the phantom type argument rather than just a
- Converted from
Data.Proxyfor reflection. This reduces the need for helper functions and scoped type variables in user code.