packages feed

parameterized-utils-2.0: parameterized-utils.cabal

Name:          parameterized-utils
Version:       2.0
Author:        Galois Inc.
Maintainer:    jhendrix@galois.com, kquick@galois.com
stability:     stable
Build-type:    Simple
Cabal-version: >= 1.9.2
Copyright:     ©2016-2019 Galois, Inc.
License:       BSD3
License-file:  LICENSE
category:      Data Structures, Dependent Types
Synopsis: Classes and data structures for working with data-kind indexed types
Description:
  This packages contains collection classes and type representations
  used for working with values that have a single parameter.  It's
  intended for things like expression libraries where one wishes
  to leverage the Haskell type-checker to improve type-safety by encoding
  the object language type system into data kinds.
extra-source-files: Changelog.md
homepage:      https://github.com/GaloisInc/parameterized-utils
bug-reports:   https://github.com/GaloisInc/parameterized-utils/issues
tested-with:   GHC==8.2.2, GHC==8.4.4, GHC==8.6.4

-- Many (but not all, sadly) uses of unsafe operations are
-- controlled by this compile flag.  When this flag is set
-- to False, alternate implementations are used to avoid
-- Unsafe.Coerce and Data.Coerce.  These alternate implementations
-- impose a significant performance hit.
flag unsafe-operations
  Description: Use unsafe operations (e.g. coercions) to improve performance
  Default: True

source-repository head
  type: git
  location: https://github.com/GaloisInc/parameterized-utils

library
  build-depends: base >= 4.10 && < 5
               , th-abstraction >=0.1 && <0.3
               , constraints == 0.10.*
               , containers
               , deepseq
               , ghc-prim
               , hashable == 1.2.*
               , hashtables == 1.2.*
               , lens == 4.17.*
               , mtl
               , template-haskell
               , text
               , vector == 0.12.*

  hs-source-dirs: src

  exposed-modules:
    Data.Parameterized
    Data.Parameterized.BoolRepr                  
    Data.Parameterized.Classes
    Data.Parameterized.ClassesC
    Data.Parameterized.Compose
    Data.Parameterized.Context
    Data.Parameterized.Context.Safe
    Data.Parameterized.Context.Unsafe
    Data.Parameterized.Ctx
    Data.Parameterized.Ctx.Proofs
    Data.Parameterized.DecidableEq
    Data.Parameterized.HashTable
    Data.Parameterized.List
    Data.Parameterized.Map
    Data.Parameterized.NatRepr
    Data.Parameterized.Nonce
    Data.Parameterized.Nonce.Transformers
    Data.Parameterized.Nonce.Unsafe
    Data.Parameterized.Pair
    Data.Parameterized.Peano
    Data.Parameterized.Some
    Data.Parameterized.SymbolRepr
    Data.Parameterized.TH.GADT
    Data.Parameterized.TraversableF
    Data.Parameterized.TraversableFC
    Data.Parameterized.Utils.BinTree
    Data.Parameterized.Utils.Endian
    Data.Parameterized.Vector
    Data.Parameterized.WithRepr                  

  other-modules:
    Data.Parameterized.NatRepr.Internal

  ghc-options: -Wall

  if flag(unsafe-operations)
    cpp-options: -DUNSAFE_OPS


test-suite parameterizedTests
  type: exitcode-stdio-1.0
  hs-source-dirs: test

  ghc-options: -Wall

  main-is: UnitTest.hs
  other-modules:
    Test.Context
    Test.NatRepr
    Test.Vector

  build-depends: base
               , hashable
               , hashtables
               , ghc-prim
               , lens
               , mtl
               , parameterized-utils
               , tasty == 1.2.*
               , tasty-ant-xml == 1.1.*
               , tasty-hunit >= 0.9 && < 0.11
               , tasty-quickcheck >= 0.8.1 && < 0.11
               , QuickCheck >= 2.7 && < 2.14