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.6:

Changes in 0.5:

Changes in 0.4:

Properties

Versions 0.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, 1.5.1.1, 1.5.1.2, 1.5.2, 1.5.2.1, 2, 2.1, 2.1.1, 2.1.1.1, 2.1.2
Dependencies base (==4.*), tagged (>=0.2.3 && <0.3) [details]
License BSD3
Copyright 2009 Edward A. Kmett, 2004 Oleg Kiselyov and Chung-chieh Shan
Author Edward A. Kmett, Oleg Kiselyov and Chung-chieh Shan
Maintainer Edward A. Kmett <ekmett@gmail.com>
Stability experimental
Category Data, Reflection, Dependent Types
Home page http://www.cs.rutgers.edu/~ccshan/prepose/prepose.pdf
Source repository head: git clone git://github.com/ekmett/reflection.git
Uploaded Fri Apr 6 23:34:30 UTC 2012 by EdwardKmett
Distributions Arch:2.1.2, Debian:2.1.1.1, Fedora:1.5.1, FreeBSD:2, LTSHaskell:2.1.2, NixOS:2.1.2, Stackage:2.1.2
Downloads 95731 total (217 in the last 30 days)
Votes
1 []
Status Docs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees