packages feed

reflection-1.1.5: reflection.cabal

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 <ekmett@gmail.com>
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