The latest version of reflection is 2.1.8-0.

reflection

Version 0.9 revision 1 uploaded by HerbertValerioRiedel.

Package meta

Synopsis
Functional Pearl: Implicit Configurations
Description

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 and the implementation has been streamlined to improve performance.

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

Changes in 0.9:

  • Faster internal implementation.

  • Removed ReifiedNum, reflectNum, and reifyIntegral; reify and reflect are considerably faster than the special case combinators were.

Changes in 0.8:

  • Switched to using type families to avoid a problem where the user could cast Proxy (s a) -> Proxy (s b) and get back a values with the wrong type under the API in effect from 0.6. This API yields a much nicer example as well.

  • Removed reflectT as it no longer makes sense.

  • Added a more advanced example example/Constraints.hs using constraint kinds.

Changes in 0.7:

  • Uses a much simpler construction where reify now converts a StablePtr to an IntPtr and reifies that directly as an integral type rather than serializing and storing the StablePtr as a list of bytes as proposed in the original paper.

  • Removed ReifiedStorable and ReifiedNums.

  • Since we have so many fewer classes now, Data.Reflection.Internal was merged back into Data.Reflection

Changes in 0.6:

  • Removed the dependency on multiparameter type classes, functional dependencies, and flexible instances, by making Reifies a single parameter type class in the same fashion as ReifiesStorable.

  • Moved the building blocks to Data.Reflection.Internal to reduce API clutter.

  • Added reflectT

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.

Author
Edward A. Kmett, Oleg Kiselyov and Chung-chieh Shan
Bug reports
n/a
Category
Data, Reflection, Dependent Types
Copyright
2009-2012 Edward A. Kmett, 2012 Elliott Hird, 2004 Oleg Kiselyov and Chung-chieh Shan
Homepage
http://github.com/ekmett/reflection
Maintainer
Edward A. Kmett <ekmett@gmail.com>
Package URL
n/a
Stability
experimental

Components