Blob Blame History Raw
name:          semigroups
category:      Algebra, Data, Data Structures, Math
version:       0.18.3
license:       BSD3
cabal-version: >= 1.10
license-file:  LICENSE
author:        Edward A. Kmett
maintainer:    Edward A. Kmett <ekmett@gmail.com>
stability:     provisional
homepage:      http://github.com/ekmett/semigroups/
bug-reports:   http://github.com/ekmett/semigroups/issues
copyright:     Copyright (C) 2011-2015 Edward A. Kmett
synopsis:      Anything that associates
description:
    In mathematics, a semigroup is an algebraic structure consisting of a set together with an associative binary operation. A semigroup generalizes a monoid in that there might not exist an identity element. It also (originally) generalized a group (a monoid with all inverses) to a type where every element did not have to have an inverse, thus the name semigroup.
build-type:    Simple
extra-source-files: .travis.yml README.markdown CHANGELOG.markdown

source-repository head
  type: git
  location: git://github.com/ekmett/semigroups.git

flag hashable
  description:
    You can disable the use of the `hashable` package using `-f-hashable`.
    .
    Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
    .
    If disabled we will not supply instances of `Hashable`
    .
    Note: `-f-hashable` implies `-f-unordered-containers`, as we are necessarily not able to supply those instances as well.
  default: True
  manual: True

flag binary
  description:
    You can disable the use of the `binary` package using `-f-binary`.
    .
    Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
  default: True
  manual: True

flag bytestring
  description:
    You can disable the use of the `bytestring` package using `-f-bytestring`.
    .
    Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
  default: True
  manual: True

flag bytestring-builder
  description:
    Decides whether to use an older version of bytestring along with bytestring-builder or just a newer version of bytestring.
    .
    This flag normally toggles automatically but you can use `-fbytestring-builder` or `-f-bytestring-builder` to explicitly change it.
  default: False
  manual: False

flag containers
  description:
    You can disable the use of the `containers` package using `-f-containers`.
    .
    Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
  default: True
  manual: True

flag deepseq
  description:
    You can disable the use of the `deepseq` package using `-f-deepseq`.
    .
    Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
  default: True
  manual: True

flag tagged
  description:
    You can disable the use of the `tagged` package using `-f-tagged`.
    .
    Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
  default: True
  manual: True

flag text
  description:
    You can disable the use of the `text` package using `-f-text`.
    .
    Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
  default: True
  manual: True

flag transformers
  description:
    You can disable the use of the `transformers` and `transformers-compat` packages using `-f-transformers`.
    .
    Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
  default: True
  manual: True

flag unordered-containers
  description:
    You can disable the use of the `unordered-containers` package using `-f-unordered-containers`.
    .
    Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
  default: True
  manual: True

library
  default-language: Haskell98
  hs-source-dirs: src
  ghc-options: -Wall

  build-depends: base >= 2 && < 5

  if impl(ghc >= 7.2)
    exposed-modules:
      Data.Semigroup.Generic

  -- legacy configuration
  if impl(ghc < 7.11.20151002)
    -- starting with GHC 8 these modules are provided by `base`
    hs-source-dirs: src-ghc7
    exposed-modules:
      Data.Semigroup
      Data.List.NonEmpty

    -- Not needed anymore since GHC 7.10
    if impl(ghc < 7.10)
      build-depends: nats >= 0.1 && < 2

    if impl(ghc >= 7.2 && < 7.5)
      build-depends: ghc-prim

    if flag(binary)
      build-depends: binary

    if flag(bytestring)
      if flag(bytestring-builder)
        build-depends: bytestring         >= 0.9    && < 0.10.4,
                       bytestring-builder >= 0.10.4 && < 1
      else
        build-depends: bytestring         >= 0.10.4 && < 1

    if flag(containers)
      build-depends: containers >= 0.3 && < 0.6

    if flag(deepseq)
      build-depends: deepseq >= 1.1 && < 1.5

    if flag(tagged)
      build-depends: tagged >= 0.4.4 && < 1

    if flag(text)
      build-depends: text >= 0.10 && < 2

    if flag(hashable)
      build-depends: hashable >= 1.1  && < 1.3

    if flag(hashable) && flag(unordered-containers)
      build-depends: unordered-containers >= 0.2  && < 0.3

    if flag(transformers)
      build-depends: transformers        >= 0.2 && < 0.6
                   , transformers-compat >= 0.5 && < 1