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 only one extension: Rank2Types

Usage reduces to using two combinators.

 reify :: a -> (forall s. Reified s => Proxy (s a) -> w) -> w
 reflect :: Reified s => p (s a) -> a
 ghci> reify 6 (\p -> reflect p + reflect p)
 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). An additional combinator that may be more useful when building instances is also supplied.

 reflectT :: Reified s => p s a -> a

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 00:56:12 UTC 2012
Uploaded byEdwardKmett
DistributionsDebian:1.2.0.1, Fedora:1.4, FreeBSD:1.3.2, NixOS:1.5.1, Stackage:1.5.1
Downloads80707 total (7097 in last 30 days)

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees