packages feed

typerep-map-0.3.3.0: typerep-map.cabal

cabal-version:       2.4
name:                typerep-map
version:             0.3.3.0
synopsis:            Efficient implementation of a dependent map with types as keys
description:
    A dependent map from type representations to values of these types.
    .
    Here is an illustration of such a map:
    .
    >     TMap
    > ---------------
    >  Int  -> 5
    >  Bool -> True
    >  Char -> 'x'
    .
    In addition to @TMap@, we provide @TypeRepMap@ parametrized by a
    @vinyl@-style interpretation. This data structure is equivalent to @DMap
    TypeRep@, but with significantly more efficient lookups.

homepage:            https://github.com/kowainik/typerep-map
bug-reports:         https://github.com/kowainik/typerep-map/issues
license:             MPL-2.0
license-file:        LICENSE
author:              Veronika Romashkina, Vladislav Zavialov, Dmitrii Kovanikov
maintainer:          Kowainik <xrom.xkov@gmail.com>
copyright:           2017-2020 Kowainik
category:            Data, Data Structures, Types
build-type:          Simple
extra-doc-files:     README.md
                   , CHANGELOG.md
tested-with:         GHC == 8.2.2
                   , GHC == 8.4.4
                   , GHC == 8.6.5
                   , GHC == 8.8.3
                   , GHC == 8.10.1

source-repository head
  type:                git
  location:            https://github.com/kowainik/typerep-map.git

common common-options
  build-depends:       base >= 4.10 && < 4.15

  default-language:    Haskell2010
  default-extensions:  BangPatterns
                       DerivingStrategies
                       OverloadedStrings
                       RecordWildCards
                       ScopedTypeVariables
                       TypeApplications
  ghc-options:         -Wall
                       -Wcompat
                       -Widentities
                       -Wincomplete-uni-patterns
                       -Wincomplete-record-updates
  if impl(ghc >= 8.0)
    ghc-options:       -Wredundant-constraints
  if impl(ghc >= 8.2)
    ghc-options:       -fhide-source-paths
  if impl(ghc >= 8.4)
    ghc-options:       -Wmissing-export-lists
                       -Wpartial-fields
  if impl(ghc >= 8.8)
    ghc-options:       -Wmissing-deriving-strategies
                       -Werror=missing-deriving-strategies
  if impl(ghc >= 8.10)
    ghc-options:       -Wunused-packages

library
  import:              common-options
  hs-source-dirs:      src
  exposed-modules:     Data.TMap
                       Data.TypeRepMap
                       Data.TypeRepMap.Internal

  build-depends:       containers >= 0.5.10.2 && < 0.7
                     , ghc-prim >= 0.5.1.1 && < 0.7
                     , primitive ^>= 0.7.0
                     , deepseq ^>= 1.4

library typerep-extra-impls
  import:              common-options
  hs-source-dirs:      typerep-extra-impls
  exposed-modules:     Data.TypeRep.CMap
                       Data.TypeRep.OptimalVector
                       Data.TypeRep.Vector

  build-depends:       containers >= 0.5.10.2 && < 0.7
                     , vector ^>= 0.12.0.1
                     , deepseq ^>= 1.4

test-suite typerep-map-test
  import:              common-options
  type:                exitcode-stdio-1.0
  hs-source-dirs:      test

  main-is:             Test.hs
  other-modules:       Test.TypeRep.CMap
                     , Test.TypeRep.TypeRepMap
                     , Test.TypeRep.TypeRepMapProperty
                     , Test.TypeRep.Vector
                     , Test.TypeRep.VectorOpt

  build-depends:       ghc-typelits-knownnat >= 0.4.2 && < 0.8
                     , hedgehog ^>= 1.0
                     , hspec ^>= 2.7.1
                     , hspec-hedgehog ^>= 0.0.1
                     , typerep-map
                     , typerep-extra-impls

  ghc-options:         -threaded -rtsopts -with-rtsopts=-N

benchmark typerep-map-benchmark
  import:              common-options
  type:                exitcode-stdio-1.0
  hs-source-dirs:      benchmark

  main-is:             Main.hs
  other-modules:       CMap
                     , CacheMap
                     , DMap
                     , Spec
                     , Vector
                     , OptimalVector

  build-depends:       criterion >= 1.4.1.0 && < 1.6
                     , deepseq ^>= 1.4.3.0
                     , dependent-map >= 0.2.4.0 && < 0.5
                     , dependent-sum >= 0.5 && < 0.8
                     , ghc-typelits-knownnat >= 0.4.2 && < 0.8
                     , typerep-map
                     , typerep-extra-impls

  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N -freduction-depth=0