reflection: Functional Pearl: Implicit Configurations
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
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.
reflectare 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.
reflectTas it no longer makes sense.
Added a more advanced example
example/Constraints.hsusing constraint kinds.
Changes in 0.7:
Uses a much simpler construction where
reifynow converts a
IntPtrand 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.
Since we have so many fewer classes now,
Data.Reflection.Internalwas merged back into
Changes in 0.6:
Removed the dependency on multiparameter type classes, functional dependencies, and flexible instances, by making
Reifiesa single parameter type class in the same fashion as
Moved the building blocks to
Data.Reflection.Internalto reduce API clutter.
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
Changes in 0.4:
Data.Proxyfor reflection. This reduces the need for helper functions and scoped type variables in user code.
[Skip to Readme]
|Versions [faq]||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, 18.104.22.168, 1.1.6, 1.1.7, 22.214.171.124, 1.3, 1.3.1, 1.3.2, 1.4, 1.5.1, 126.96.36.199, 188.8.131.52, 1.5.2, 184.108.40.206, 2, 2.1, 2.1.1, 220.127.116.11, 2.1.2, 2.1.3, 2.1.4, 2.1.5, 2.1.6|
|Dependencies||base (>=4.4 && <5), tagged (>=0.2.3 && <0.3) [details]|
|Copyright||2009-2012 Edward A. Kmett, 2012 Elliott Hird, 2004 Oleg Kiselyov and Chung-chieh Shan|
|Author||Edward A. Kmett, Oleg Kiselyov and Chung-chieh Shan|
|Maintainer||Edward A. Kmett <firstname.lastname@example.org>|
|Revised||Revision 1 made by HerbertValerioRiedel at 2016-01-03T09:21:16Z|
|Category||Data, Reflection, Dependent Types|
|Source repo||head: git clone git://github.com/ekmett/reflection.git|
|Uploaded||by EdwardKmett at 2012-04-07T08:04:08Z|
|Distributions||Arch:2.1.6, Debian:2.1.4, Fedora:2.1.6, FreeBSD:2, LTSHaskell:2.1.4, NixOS:2.1.6, Stackage:2.1.4, openSUSE:2.1.6|
|Downloads||190224 total (677 in the last 30 days)|
|Rating||2.25 (votes: 2) [estimated by Bayesian average]|
Docs uploaded by user
Build status unknown [no reports yet]
Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.
For package maintainers and hackage trustees