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

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 Sat Apr 7 04:16:02 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 95545 total (113 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