connections-0.0.3: Partial orders, Galois connections, and lattices.

Safe HaskellSafe
LanguageHaskell2010

Data.Dioid

Contents

Synopsis

Documentation

class (Presemiring a, PredioidLaw a) => Predioid a Source #

Right pre-dioids and dioids.

A right-dioid is a semiring with a right-canonical pre-order relation relative to +:

a Prd b <==> b == a + c
a Prd (a + b) == True

Consequently Prd is both reflexive and transitive:

a Prd a == True
a Prd b && b Prd c ==> a Prd c == True

Finally Prd is an order relation:

(a =~ b) <==> (a == b)

See Property

Instances
Predioid Bool Source # 
Instance details

Defined in Data.Dioid

Predioid Natural Source # 
Instance details

Defined in Data.Dioid

Predioid Word Source # 
Instance details

Defined in Data.Dioid

Predioid Word8 Source # 
Instance details

Defined in Data.Dioid

Predioid Word16 Source # 
Instance details

Defined in Data.Dioid

Predioid Word32 Source # 
Instance details

Defined in Data.Dioid

Predioid Word64 Source # 
Instance details

Defined in Data.Dioid

Predioid () Source # 
Instance details

Defined in Data.Dioid

Predioid IntSet Source # 
Instance details

Defined in Data.Dioid

(Prd a, (Additive - Semigroup) a) => Predioid [a] Source # 
Instance details

Defined in Data.Dioid

(Prd a, Predioid a) => Predioid (Maybe a) Source # 
Instance details

Defined in Data.Dioid

Predioid (Ratio Natural) Source # 
Instance details

Defined in Data.Dioid

(Prd a, Ord a, (Additive - Semigroup) a) => Predioid (Min a) Source # 
Instance details

Defined in Data.Dioid

(Prd a, Ord a, (Multiplicative - Semigroup) a) => Predioid (Max a) Source # 
Instance details

Defined in Data.Dioid

(Prd a, Predioid a) => Predioid (IntMap a) Source # 
Instance details

Defined in Data.Dioid

Ord a => Predioid (Set a) Source # 
Instance details

Defined in Data.Dioid

(Prd a, Prd b, Predioid a, Predioid b) => Predioid (Either a b) Source # 
Instance details

Defined in Data.Dioid

(Ord k, Prd a, Predioid a) => Predioid (Map k a) Source # 
Instance details

Defined in Data.Dioid

class (Semiring a, Predioid a) => Dioid a Source #

Instances
Dioid Bool Source # 
Instance details

Defined in Data.Dioid

Dioid Natural Source # 
Instance details

Defined in Data.Dioid

Dioid Word Source # 
Instance details

Defined in Data.Dioid

Dioid Word8 Source # 
Instance details

Defined in Data.Dioid

Dioid Word16 Source # 
Instance details

Defined in Data.Dioid

Dioid Word32 Source # 
Instance details

Defined in Data.Dioid

Dioid Word64 Source # 
Instance details

Defined in Data.Dioid

Dioid () Source # 
Instance details

Defined in Data.Dioid

(Prd a, (Additive - Monoid) a) => Dioid [a] Source # 
Instance details

Defined in Data.Dioid

(Prd a, Dioid a) => Dioid (Maybe a) Source # 
Instance details

Defined in Data.Dioid

Dioid (Ratio Natural) Source # 
Instance details

Defined in Data.Dioid

(Ord a, Maximal a, (Additive - Monoid) (Min a), (Additive - Monoid) a) => Dioid (Min a) Source # 
Instance details

Defined in Data.Dioid

(Ord a, Minimal a, (Additive - Monoid) (Max a), (Multiplicative - Monoid) a) => Dioid (Max a) Source # 
Instance details

Defined in Data.Dioid

(Prd a, Dioid a) => Dioid (IntMap a) Source # 
Instance details

Defined in Data.Dioid

(Ord k, (Multiplicative - Monoid) k, Prd a, Dioid a) => Dioid (Map k a) Source # 
Instance details

Defined in Data.Dioid

minPlus :: (Additive - Monoid) a => Maximal a => Ord a => Functor f => Functor g => Foldable f => Foldable g => f (g a) -> a Source #

Evaluate a min-plus dioid expression.

>>> minPlus [[1..4 :: Int], [0..2 :: Int]]
3

maxPlus :: (Additive - Monoid) a => Minimal a => Ord a => Functor f => Functor g => Foldable f => Foldable g => f (g a) -> a Source #

Evaluate a max-plus dioid expression.

>>> maxPlus [[1..4 :: Int], [0..2 :: Int]]
10

minTimes :: (Multiplicative - Monoid) a => Maximal a => Ord a => Functor f => Functor g => Foldable f => Foldable g => f (g a) -> a Source #

Evaluate a min-times dioid expression.

>>> minTimes [[1..4 :: Int], [0..2 :: Int]]
0

maxTimes :: (Multiplicative - Monoid) a => Minimal a => Ord a => Functor f => Functor g => Foldable f => Foldable g => f (g a) -> a Source #

Evaluate a max-times dioid expression.

>>> maxTimes [[1..4 :: Int], [0..2 :: Int]]
24

Orphan instances

(Ord a, (Additive - Semigroup) a) => Presemiring (Min a) Source # 
Instance details

(Ord a, (Multiplicative - Semigroup) a) => Presemiring (Max a) Source # 
Instance details

(Ord a, Maximal a, (Additive - Monoid) (Min a), (Additive - Monoid) a) => Semiring (Min a) Source # 
Instance details

(Ord a, Minimal a, (Additive - Monoid) (Max a), (Multiplicative - Monoid) a) => Semiring (Max a) Source # 
Instance details