semirings-0.4: semirings.cabal
name: semirings
category: Algebra, Data, Data Structures, Math, Maths, Mathematics
version: 0.4
license: BSD3
cabal-version: >= 1.10
license-file: LICENSE
author: chessai
maintainer: chessai <chessai1996@gmail.com>
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.4.1
, GHC == 7.4.2
, GHC == 7.6.1
, GHC == 7.6.2
, GHC == 7.8.1
, GHC == 7.8.3
, GHC == 7.8.4
, GHC == 7.10.1
, GHC == 7.10.2
, GHC == 7.10.3
, GHC == 8.0.1
, GHC == 8.0.2
, GHC == 8.2.1
, GHC == 8.2.2
, GHC == 8.4.1
, GHC == 8.4.2
, GHC == 8.4.3
, GHC == 8.4.4
, GHC == 8.6.1
, GHC == 8.6.2
, GHC == 8.6.3
, GHC == 8.6.4
, GHC == 8.6.5
source-repository head
type: git
location: git://github.com/chessai/semirings.git
flag hashable
description:
You can disable the use of the `hashable` package using `-f-hashable`.
.
Disabling this may be useful for accelerating builds in sandboxes for expert users.
.
Note: `-f-hashable` implies `-f-unordered-containers`, as we are necessarily not able to supply those instances as well.
default: True
manual: True
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.5 && < 5
, integer-gmp
if impl(ghc < 7.10)
build-depends:
nats >= 0.1 && < 2
, transformers
if impl(ghc < 8.0)
build-depends: semigroups
if impl(ghc < 7.8)
build-depends: tagged
if impl(ghc >= 7.2)
exposed-modules:
Data.Semiring
Data.Star
Data.Semiring.Tropical
if impl(ghc >= 7.6.1)
exposed-modules:
Data.Semiring.Generic
if flag(containers)
build-depends: containers >= 0.5.4 && < 0.6.1.0
if flag(hashable)
build-depends: hashable >= 1.1 && < 1.3
if flag(hashable) && flag(unordered-containers)
build-depends: unordered-containers >= 0.2 && < 0.3