packages feed

parameterized-utils-2.1.9.0: parameterized-utils.cabal

Cabal-version: 2.2
Name:          parameterized-utils
Version:       2.1.9.0
Author:        Galois Inc.
Maintainer:    kquick@galois.com, rscott@galois.com
stability:     stable
Build-type:    Simple
Copyright:     ©2016-2022 Galois, Inc.
License:       BSD-3-Clause
License-file:  LICENSE
category:      Data Structures, Dependent Types
Synopsis: Classes and data structures for working with data-kind indexed types
Description:
  This package 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.6.5, GHC==8.8.4, GHC==8.10.7, GHC==9.0.2, GHC==9.2.2, GHC==9.4.5, GHC==9.6.1, GHC==9.8.1, GHC==9.10.1

-- 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


common bldflags
  ghc-options: -Wall
               -Wcompat
               -Wpartial-fields
               -Wincomplete-uni-patterns
               -Werror=incomplete-patterns
               -Werror=missing-methods
               -Werror=overlapping-patterns
               -Wno-trustworthy-safe
               -fhide-source-paths
  default-language: Haskell2010


library
  import: bldflags
  build-depends: base >= 4.10 && < 5
               , base-orphans   >=0.8.2 && <0.10
               , th-abstraction >=0.4.2 && <0.8
               , constraints    >=0.10 && <0.15
               , containers
               , deepseq
               , ghc-prim
               , hashable       >=1.2  && <1.6
               , hashtables     >=1.2  && <1.4
               , indexed-traversable
               , lens           >=4.16 && <5.4
               , mtl
               , profunctors    >=5.6 && < 5.7
               , template-haskell
               , text
               , vector         >=0.12 && < 0.14

  hs-source-dirs: src

  exposed-modules:
    Data.Parameterized
    Data.Parameterized.All
    Data.Parameterized.Axiom
    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.DataKind
    Data.Parameterized.DecidableEq
    Data.Parameterized.Fin
    Data.Parameterized.FinMap
    Data.Parameterized.FinMap.Safe
    Data.Parameterized.FinMap.Unsafe
    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.TraversableFC.WithIndex
    Data.Parameterized.Utils.BinTree
    Data.Parameterized.Utils.Endian
    Data.Parameterized.Vector
    Data.Parameterized.WithRepr

  other-modules:
    Data.Parameterized.NatRepr.Internal

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


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

  main-is: UnitTest.hs
  other-modules:
    Test.Context
    Test.Fin
    Test.FinMap
    Test.List
    Test.NatRepr
    Test.Some
    Test.SymbolRepr
    Test.TH
    Test.Vector

  build-depends: base
               , hashable
               , hashtables
               , hedgehog
               , indexed-traversable
               , ghc-prim
               , lens
               , mtl
               , parameterized-utils
               , tasty >= 1.2 && < 1.6
               , tasty-ant-xml == 1.1.*
               , tasty-hunit >= 0.9 && < 0.11
               , tasty-hedgehog >= 1.2

  if impl(ghc >= 8.6)
    build-depends:
      hedgehog-classes