reflection: Reifies arbitrary terms into types that can be reflected back into terms
This package addresses the configuration problem which is
propagating configurations that are available at run-time, allowing
multiple configurations to coexist without resorting to mutable
global variables or System.IO.Unsafe.unsafePerformIO
.
That package is an implementation of the ideas presented in the paper "Functional Pearl: Implicit Configurations" by Oleg Kiselyov and Chung-chieh Shan (original paper). However, the API has been streamlined to improve performance.
There are a handful of tutorials on how to use this library:
Austin Seipp's tutorial Reflecting values to types and back provides a summary of the approach taken by this library, along with more motivating examples.
Arnaud Spiwack's tutorial All about reflection explains how to use this library.
[Skip to Readme]
Flags
Manual Flags
Name | Description | Default |
---|---|---|
template-haskell | You can disable the use of the `template-haskell` package using `-f-template-haskell`. Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users. | Enabled |
Automatic Flags
Name | Description | Default |
---|---|---|
slow | If you enable this flag, we use a more portable much much slower implementation. Moreover, the | Disabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- reflection-2.1.9.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
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, 2.1.9 |
---|---|
Change log | CHANGELOG.markdown |
Dependencies | base (>=4.9 && <5), template-haskell [details] |
Tested with | ghc ==8.0.2, ghc ==8.2.2, ghc ==8.4.4, ghc ==8.6.5, ghc ==8.8.4, ghc ==8.10.7, ghc ==9.0.2, ghc ==9.2.8, ghc ==9.4.8, ghc ==9.6.6, ghc ==9.8.4, ghc ==9.10.1, ghc ==9.12.1 |
License | BSD-3-Clause |
Copyright | 2009-2013 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 |
Bug tracker | http://github.com/ekmett/reflection/issues |
Source repo | head: git clone git://github.com/ekmett/reflection.git |
Uploaded | by ryanglscott at 2024-12-04T12:05:19Z |
Distributions | Arch:2.1.8, Debian:2.1.6, Fedora:2.1.7, FreeBSD:2, LTSHaskell:2.1.9, NixOS:2.1.8, Stackage:2.1.9, openSUSE:2.1.8 |
Reverse Dependencies | 96 direct, 7845 indirect [details] |
Downloads | 216467 total (522 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] |