File reflection.cabal of Package ghc-reflection

name:           reflection
version:        2.1.9
x-revision: 1
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.
  .
  There are a handful of tutorials on how to use this library:
  .
  * 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.
  .
  * Arnaud Spiwack's tutorial <https://www.tweag.io/posts/2017-12-21-reflection-tutorial.html All about reflection> explains how to use this library.
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

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

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 >= 8.6)
    ghc-options: -Wno-star-is-type

  default-extensions: Trustworthy

  build-depends:
    base >= 4.9 && < 5

  default-language: Haskell98

  if flag(template-haskell) && impl(ghc)
    -- 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       >= 4.9 && < 5,
    containers >= 0.1 && < 0.9,
    hspec      >= 2   && < 3,
    QuickCheck >= 2   && < 3,
    reflection
openSUSE Build Service is sponsored by