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
UploadedSat Apr 7 04:16:02 UTC 2012 by EdwardKmett
DistributionsDebian:1.2.0.1, Fedora:1.4, FreeBSD:1.3.2, NixOS:1.5.1, Stackage:1.5.1
Downloads83047 total (1990 in last 30 days)
StatusDocs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees