forked from ekmett/reflection
-
Notifications
You must be signed in to change notification settings - Fork 0
/
reflection.cabal
93 lines (83 loc) · 2.81 KB
/
reflection.cabal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
name: reflection
version: 1.1.5
license: BSD3
license-file: LICENSE
author: Edward A. Kmett, Elliott Hird, Oleg Kiselyov and Chung-chieh Shan
maintainer: Edward A. Kmett <[email protected]>
stability: experimental
homepage: http://github.com/ekmett/reflection
category: Data, Reflection, Dependent Types
synopsis: Reifies arbitrary terms into types that can be reflected back into terms
copyright: 2009-2012 Edward A. Kmett,
2012 Elliott Hird,
2004 Oleg Kiselyov and Chung-chieh Shan
build-type: Simple
cabal-version: >= 1.10
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 streamlined to improve performance.
.
The original paper can be obtained from
<http://www.cs.rutgers.edu/~ccshan/prepose/prepose.pdf>.
.
/Changes in 1.1.5/:
.
* Both implementations now work on Hugs; the fast implementation ascends
from the ranks of completely unportable black magic to being merely
/mostly/ unportable black magic.
.
/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 the 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.
extra-source-files:
examples/Monoid.hs
examples/Constraints.hs
examples/Benchmark.hs
README
slow/Data/Reflection.hs
fast/Data/Reflection.hs
flag slow
default: False
manual: False
source-repository head
type: git
location: git://github.com/ekmett/reflection.git
library
ghc-options: -Wall
if impl(ghc >= 7.2)
default-extensions: Trustworthy
build-depends:
base >= 2 && < 5,
tagged >= 0.2.3 && < 0.5
default-language: Haskell98
if !flag(slow) && (impl(ghc) || impl(hugs))
hs-source-dirs: fast
else
other-extensions: ScopedTypeVariables, FlexibleInstances
hs-source-dirs: slow
other-extensions:
MultiParamTypeClasses,
FunctionalDependencies,
Rank2Types,
CPP
exposed-modules: Data.Reflection