name:                ixset-typed
version:             0.5
synopsis:            Efficient relational queries on Haskell sets.
description:
    This Haskell package provides a data structure of sets that are indexed
    by potentially multiple indices.
    .
    Sets can be created, modified, and queried in various ways.
    .
    The package is a variant of the <https://hackage.haskell.org/package/ixset ixset>
    package. The ixset package makes use
    of run-time type information to find a suitable index on a query, resulting
    in possible run-time errors when no suitable index exists. In ixset-typed,
    the types of all indices available or tracked in the type system.
    Thus, ixset-typed should be safer to use than ixset, but in turn requires
    more GHC extensions.
    .
    At the moment, the two packages are relatively compatible. As a consequence
    of the more precise types, a few manual tweaks are necessary when switching
    from one to the other, but the interface is mostly the same.
license:             BSD3
license-file:        COPYING
author:              Andres Löh, Happstack team, HAppS LLC
maintainer:          Andres Löh <andres@well-typed.com>
category:            Data Structures
build-type:          Simple
cabal-version:       >= 1.10
extra-source-files:  CHANGELOG.md
tested-with:         GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.3, GHC == 8.6.1, GHC == 8.8.1

source-repository head
  type:              git
  location:          https://github.com/well-typed/ixset-typed.git

library
  build-depends:     base             >= 4.9 && < 5,
                     containers       >= 0.5 && < 1,
                     deepseq          >= 1.3 && < 2,
                     safecopy         >= 0.8 && < 0.11,
                     syb              >= 0.4 && < 1,
                     template-haskell >= 2.8 && < 2.17

  hs-source-dirs:    src
  exposed-modules:
                     Data.IxSet.Typed
                     Data.IxSet.Typed.Ix

  ghc-options:       -Wall -fno-warn-unused-do-bind

  default-language:  Haskell2010

test-suite test-ixset-typed
  type:              exitcode-stdio-1.0
  build-depends:     ixset-typed,
                     base             >= 4.9 && < 5,
                     containers       >= 0.5 && < 1,
                     HUnit,
                     QuickCheck,
                     tasty,
                     tasty-hunit,
                     tasty-quickcheck
  hs-source-dirs:    tests
  main-is:           TestIxSetTyped.hs
  other-modules:     Data.IxSet.Typed.Tests

  ghc-options:       -Wall

  default-language:  Haskell2010