cabal-version:       2.2

name:                posable

synopsis:            A product-of-sums generics library

description:         A generics library that represents a non-recursive Haskell 98
                     datatype as a product-of-sums. Each type is represented
                     with a single tag, and a product of sums of fields. The tag
                     represents all constructor choices in the type, the fields
                     contain all the values in the type. This representation
                     maps easily to a struct of unions, which is a
                     memory-efficient way to store sum datatypes.

category:            Generics

-- The package version.  See the Haskell package versioning policy (PVP)
-- for standards guiding when and how versions should be incremented.
-- https://wiki.haskell.org/Package_versioning_policy
-- PVP summary:      +-+------- breaking API changes
--                   | | +----- non-breaking API additions
--                   | | | +--- code changes with no API change
version:             0.10.0.0
tested-with:         GHC >= 8.10

license:             BSD-3-Clause

license-file:        LICENSE

author:              Rick van Hoef

maintainer:          Rick van Hoef <hackage@rickvanhoef.nl>
homepage:            https://github.com/Riscky/posable
bug-reports:         https://github.com/Riscky/posable/issues

build-type:          Simple

extra-source-files:  CHANGELOG.md
                     README.md

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

library
  -- Modules included in this executable, other than Main.
  exposed-modules:       Generics.POSable.POSable
                       , Generics.POSable.Instances
                       , Generics.POSable.Representation
                       , Generics.POSable.TH

  other-modules:         Examples

  -- LANGUAGE extensions used by modules in this package.
  -- other-extensions:

  -- Other library packages from which modules are imported.
  build-depends:       base                  >= 4.15.0 && < 4.16
                     , finite-typelits       >= 0.1.4 && < 0.2
                     , generics-sop          >= 0.5.1 && < 0.6
                     , template-haskell      >= 2.17.0 && < 2.18
                     , ghc-typelits-knownnat >= 0.7.6 && < 0.8,

  -- Directories containing source files.
  hs-source-dirs:      src
                     , examples

  default-extensions:  NoStarIsType
                     , DataKinds
                     , TypeApplications
                     , TypeOperators
                     , ScopedTypeVariables
                     , TypeFamilies
                     , GADTs
                     , DeriveAnyClass

  -- Base language which the package is written in.
  default-language:    Haskell2010
  ghc-options:         -Wall

test-suite unit-test
  type: exitcode-stdio-1.0
  main-is: Main.hs
  ghc-options: -Wall
  hs-source-dirs:
      test
  build-depends:
      posable
    , base
    , ghc-typelits-knownnat
    , template-haskell
    , tasty >= 1.4 && < 1.5
    , tasty-hunit >= 0.10 && < 0.11
    , tasty-quickcheck >= 0.10.2 && < 0.11
  default-language:
      Haskell2010