name: semirings
category: Algebra, Data, Data Structures, Math, Maths, Mathematics
version: 0.6
license: BSD3
cabal-version: >= 1.10
license-file: LICENSE
author: chessai
maintainer: chessai
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.4
, unordered-containers >= 0.2 && < 0.3