The reflection package

This package provides an implementation of the ideas presented in the paper
"Functional Pearl: Implicit Configurations" by Oleg Kiselyov and
Chung-chieh Shan. However, the API has been modified to use Rank2Types and TypeFamilies and
the implementation has been streamlined to improve performance.

Removed ReifiedNum, reflectNum, and reifyIntegral; reify and reflect are
considerably faster than the special case combinators were.

Changes in 0.8:

Switched to using type families to avoid a problem where the user could cast
Proxy (s a) -> Proxy (s b) and get back a values with the wrong type under
the API in effect from 0.6. This API yields a much nicer example as well.

Removed reflectT as it no longer makes sense.

Added a more advanced example example/Constraints.hs using constraint kinds.

Changes in 0.7:

Uses a much simpler construction where reify now converts a StablePtr to an
IntPtr and reifies that directly as an integral type rather than serializing
and storing the StablePtr as a list of bytes as proposed in the original paper.

Removed ReifiedStorable and ReifiedNums.

Since we have so many fewer classes now, Data.Reflection.Internal was merged back
into Data.Reflection

Changes in 0.6:

Removed the dependency on multiparameter type classes, functional
dependencies, and flexible instances, by making Reifies a single
parameter type class in the same fashion as ReifiesStorable.

Moved the building blocks to Data.Reflection.Internal to reduce API clutter.

Added reflectT

Changes in 0.5:

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 Proxy.

Changes in 0.4:

Converted from Data.Tagged to using Data.Proxy for reflection. This
reduces the need for helper functions and scoped type variables in user
code.

Downloads

Maintainers' corner

Readme for reflection-0.9

reflection
==========
This package provides an implementation of the ideas presented in the paper
Oleg Kiselyov and Chung-Chieh Shan, "Functional Pearl: Implicit Configurations"
<http://www.cs.rutgers.edu/~ccshan/prepose/prepose.pdf>
However, the API has been modified to use @Rank2Types@ and @TypeFamilies@ and the
implementation has been streamlined to improve performance.