The reflection package

[Tags: bsd3, library]

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

Usage reduces to using two combinators.

 reify :: a -> (forall s. (Reified s, Reflected s ~ a) => Proxy s -> w) -> w
 reflect :: Reified s => p s -> Reflected s
 ghci> reify 6 (\p -> reflect p + reflect p) :: Int
 12

The argument passed along by reify is just a data Proxy t = Proxy, so all of the information needed to reconstruct your value has been moved to the type level. This enables it to be used when constructing instances (See examples/Monoid.hs).

Changes in 0.8:

Changes in 0.7:

Changes in 0.6:

Changes in 0.5:

Changes in 0.4:


Properties

Versions0.0.0, 0.1.0, 0.1.1, 0.2.0, 0.3.0, 0.3.1, 0.3.2, 0.3.3, 0.3.5, 0.4.0, 0.4.0.1, 0.4.0.2, 0.4.1, 0.4.1.1, 0.5, 0.5.0.1, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.1.5, 1.1.5.1, 1.1.6, 1.1.7, 1.2.0.1, 1.3, 1.3.1, 1.3.2, 1.4, 1.5.1
Dependenciesbase (==4.*), tagged (>=0.2.3 && <0.3)
LicenseBSD3
Copyright2009 Edward A. Kmett, 2004 Oleg Kiselyov and Chung-chieh Shan
AuthorEdward A. Kmett, Oleg Kiselyov and Chung-chieh Shan
MaintainerEdward A. Kmett <ekmett@gmail.com>
Stabilityexperimental
CategoryData, Reflection, Dependent Types
Home pagehttp://www.cs.rutgers.edu/~ccshan/prepose/prepose.pdf
Source repositoryhead: git clone git://github.com/ekmett/reflection.git
Upload dateSat Apr 7 04:16:02 UTC 2012
Uploaded byEdwardKmett
DistributionsDebian:1.2.0.1, Fedora:1.4, FreeBSD:1.3.2, NixOS:1.5.1
Downloads64506 total (7104 in last 30 days)

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees