reflection: Reifies arbitrary terms into types that can be reflected back into terms

[ bsd3, data, dependent-types, library, reflection ] [ Propose Tags ]

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 streamlined to improve performance.

The original paper can be obtained from http://www.cs.rutgers.edu/~ccshan/prepose/prepose.pdf

Changes from 0.5 to 1.1:

  • Much faster implementation available that is about 50 times faster than 0.9 and which runs purely on black magic. This version is now used by default. To turn it off install with the slow flag. If you encounter a problem with implementation, please contact the author.

  • Removed ReifiedNum, reflectNum, and reifyIntegral; reify and reflect are about 3 orders of magnitude faster than the special case combinators were.

Changes in 0.5:

  • Generalized the type signatures in reflect to allow you to pass any type with kind * -> * wrapped around the desired type as the phantom type argument rather than just a Proxy.

Changes in 0.4:

  • Converted from Data.Tagged to using Data.Proxy for reflection. This reduces the need for helper functions and scoped type variables in user code.


[Skip to Readme]

Modules

[Index]

Flags

Automatic Flags
NameDescriptionDefault
slowDisabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 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, 2.1.3, 2.1.4, 2.1.5, 2.1.6, 2.1.7, 2.1.8
Dependencies base (>=4 && <5), tagged (>=0.2.3 && <0.3) [details]
License BSD-3-Clause
Copyright 2009-2012 Edward A. Kmett, 2012 Elliott Hird, 2004 Oleg Kiselyov and Chung-chieh Shan
Author Edward A. Kmett, Elliott Hird, Oleg Kiselyov and Chung-chieh Shan
Maintainer Edward A. Kmett <ekmett@gmail.com>
Category Data, Reflection, Dependent Types
Home page http://github.com/ekmett/reflection
Source repo head: git clone git://github.com/ekmett/reflection.git
Uploaded by EdwardKmett at 2012-04-07T12:08:12Z
Distributions Arch:2.1.8, Debian:2.1.6, Fedora:2.1.7, FreeBSD:2, LTSHaskell:2.1.8, NixOS:2.1.8, Stackage:2.1.8, openSUSE:2.1.7
Reverse Dependencies 94 direct, 7797 indirect [details]
Downloads 215016 total (427 in the last 30 days)
Rating 2.25 (votes: 2) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for reflection-1.1.2

[back to package description]
reflection
==========

This package provides an implementation of the ideas presented in the paper

  Oleg Kiselyov and Chung-Chieh Shan, "Functional Pearl: Implicit Configurations"
  <http://www.cs.rutgers.edu/~ccshan/prepose/prepose.pdf>

However, the API has been modified to use Rank2Types and TypeFamilies and the
implementation has been streamlined to improve performance.