File: reflection.cabal

package info (click to toggle)
haskell-reflection 2.1.6-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, sid
  • size: 156 kB
  • sloc: haskell: 809; makefile: 7
file content (125 lines) | stat: -rw-r--r-- 3,976 bytes parent folder | download
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
name:           reflection
version:        2.1.6
license:        BSD3
license-file:   LICENSE
author:         Edward A. Kmett, Elliott Hird, Oleg Kiselyov and Chung-chieh Shan
maintainer:     Edward A. Kmett <ekmett@gmail.com>
stability:      experimental
homepage:       http://github.com/ekmett/reflection
bug-reports:    http://github.com/ekmett/reflection/issues
category:       Data, Reflection, Dependent Types
synopsis:       Reifies arbitrary terms into types that can be reflected back into terms
copyright:      2009-2013 Edward A. Kmett,
                2012 Elliott Hird,
                2004 Oleg Kiselyov and Chung-chieh Shan
build-type:     Simple
cabal-version:  >= 1.10
description:
  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 (<http://okmij.org/ftp/Haskell/tr-15-04.pdf original paper>).
  However, the API has been streamlined to improve performance.
  .
  Austin Seipp's tutorial <https://www.schoolofhaskell.com/user/thoughtpolice/using-reflection Reflecting values to types and back> provides a summary of the
  approach taken by this library, along with more motivating examples.
tested-with:   GHC == 7.0.4
             , GHC == 7.2.2
             , GHC == 7.4.2
             , GHC == 7.6.3
             , GHC == 7.8.4
             , GHC == 7.10.3
             , GHC == 8.0.2
             , GHC == 8.2.2
             , GHC == 8.4.4
             , GHC == 8.6.5
             , GHC == 8.8.3
             , GHC == 8.10.1

extra-source-files:
  examples/reflection-examples.cabal
  examples/LICENSE
  examples/*.hs
  CHANGELOG.markdown
  README.markdown
  slow/Data/Reflection.hs
  fast/Data/Reflection.hs
  .travis.yml

flag slow
  description:
    If you enable this flag, we use a more portable much much slower implementation. Moreover, the 'Given' API is broken, so this is currently an unsupported configuration. If you feel the need to turn on this flag for any reason, please email the maintainer!
  default: False
  manual: False

flag template-haskell
  description:
    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.
  default: True
  manual: True

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

  if impl(ghc < 7.8)
    build-depends:
      tagged >= 0.4.4 && < 1

  if !impl(ghc >= 8.0)
    build-depends:
      semigroups >= 0.11 && < 0.20

  default-language: Haskell98

  if flag(template-haskell) && impl(ghc)
    if !impl(ghc >= 8.0)
      other-extensions: TemplateHaskell
    -- else
    --   other-extensions: TemplateHaskellQuotes -- Hackage doesn't know this extension yet
    build-depends: template-haskell

  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

test-suite spec
  type: exitcode-stdio-1.0
  hs-source-dirs: tests
  main-is: Spec.hs
  other-modules: ReifyNatSpec
                 T47Spec
  ghc-options: -Wall
  default-language: Haskell98
  build-tool-depends: hspec-discover:hspec-discover >= 1.8
  build-depends:
    base       >= 2   && < 5,
    containers >= 0.1 && < 0.7,
    hspec      >= 2   && < 3,
    QuickCheck >= 2   && < 3,
    reflection