name:          semirings
category:      Algebra, Data, Data Structures, Math, Maths, Mathematics
version:       0.6
x-revision: 1
license:       BSD3
cabal-version: >= 1.10
license-file:  LICENSE
author:        chessai
maintainer:    chessai <[email protected]>
stability:     provisional
homepage:      http://github.com/chessai/semirings
bug-reports:   http://github.com/chessai/semirings/issues
copyright:     Copyright (C) 2018 chessai
synopsis:      two monoids as one, in holy haskimony
description:
 Haskellers are usually familiar with monoids and semigroups. A monoid has an appending operation `<>` (or `mappend`),
 and an identity element, `mempty`. A semigroup has an appending `<>` operation, but does not require a `mempty` element.
 .
 A Semiring has two appending operations, `plus` and `times`, and two respective identity elements, `zero` and `one`.
 .
 More formally, a Semiring R is a set equipped with two binary relations `+` and `*`, such that:
 .
 (R,+) is a commutative monoid with identity element 0,
 .
 (R,*) is a monoid with identity element 1,
 .
 (*) left and right distributes over addition, and
 .
 multiplication by '0' annihilates R.

build-type:    Simple
extra-source-files: README.md CHANGELOG.md
tested-with:   GHC == 7.10.3
            , GHC == 8.0.2
            , GHC == 8.2.2
            , GHC == 8.4.4
            , GHC == 8.6.5
            , GHC == 8.8.4
            , GHC == 8.10.2

source-repository head
 type: git
 location: git://github.com/chessai/semirings.git

flag containers
 description:
   You can disable the use of the `containers` package using `-f-containers`.
   .
   Disabling this 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 may be useful for accelerating builds in sandboxes for expert users.
 default: True
 manual: True

library
 default-language: Haskell98
 ghc-options: -Wall

 build-depends:
     base >= 4.8 && < 5
   , base-compat-batteries
 exposed-modules:
   Data.Euclidean
   Data.Field
   Data.Semiring
   Data.Star
   Data.Semiring.Tropical
   Data.Semiring.Generic

 if impl(ghc < 8.6.1)
   build-depends: template-haskell >= 2.4.0.0

 if flag(containers)
   build-depends: containers >= 0.5.4 && < 0.7

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