| Safe Haskell | Safe |
|---|---|
| Language | Haskell2010 |
Data.Dioid
Contents
Synopsis
- type Ordered = Additive
- type PredioidLaw a = (Prd a, (Ordered - Semigroup) a, (Multiplicative - Semigroup) a)
- type DioidLaw a = (Prd a, (Ordered - Monoid) a, (Multiplicative - Monoid) a)
- class (Presemiring a, PredioidLaw a) => Predioid a
- class (Semiring a, Predioid a) => Dioid a
- minPlus :: (Additive - Monoid) a => Maximal a => Ord a => Functor f => Functor g => Foldable f => Foldable g => f (g a) -> a
- maxPlus :: (Additive - Monoid) a => Minimal a => Ord a => Functor f => Functor g => Foldable f => Foldable g => f (g a) -> a
- minTimes :: (Multiplicative - Monoid) a => Maximal a => Ord a => Functor f => Functor g => Foldable f => Foldable g => f (g a) -> a
- maxTimes :: (Multiplicative - Monoid) a => Minimal a => Ord a => Functor f => Functor g => Foldable f => Foldable g => f (g a) -> a
Documentation
type PredioidLaw a = (Prd a, (Ordered - Semigroup) a, (Multiplicative - Semigroup) a) Source #
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 +:
aPrdb<==>b == a+c aPrd(a+b)==True
Consequently Prd is both reflexive and transitive:
aPrda==TrueaPrdb && bPrdc ==> aPrdc==True
Finally Prd is an order relation:
(a=~b)<==>(a==b)
See Property
Instances
class (Semiring a, Predioid a) => Dioid a Source #
Instances
| Dioid Bool Source # | |
Defined in Data.Dioid | |
| Dioid Natural Source # | |
Defined in Data.Dioid | |
| Dioid Word Source # | |
Defined in Data.Dioid | |
| Dioid Word8 Source # | |
Defined in Data.Dioid | |
| Dioid Word16 Source # | |
Defined in Data.Dioid | |
| Dioid Word32 Source # | |
Defined in Data.Dioid | |
| Dioid Word64 Source # | |
Defined in Data.Dioid | |
| Dioid () Source # | |
Defined in Data.Dioid | |
| (Prd a, (Additive - Monoid) a) => Dioid [a] Source # | |
Defined in Data.Dioid | |
| (Prd a, Dioid a) => Dioid (Maybe a) Source # | |
Defined in Data.Dioid | |
| Dioid (Ratio Natural) Source # | |
Defined in Data.Dioid | |
| (Ord a, Maximal a, (Additive - Monoid) (Min a), (Additive - Monoid) a) => Dioid (Min a) Source # | |
Defined in Data.Dioid | |
| (Ord a, Minimal a, (Additive - Monoid) (Max a), (Multiplicative - Monoid) a) => Dioid (Max a) Source # | |
Defined in Data.Dioid | |
| (Prd a, Dioid a) => Dioid (IntMap a) Source # | |
Defined in Data.Dioid | |
| (Ord k, (Multiplicative - Monoid) k, Prd a, Dioid a) => Dioid (Map k a) Source # | |
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 # | |
| (Ord a, (Multiplicative - Semigroup) a) => Presemiring (Max a) Source # | |
| (Ord a, Maximal a, (Additive - Monoid) (Min a), (Additive - Monoid) a) => Semiring (Min a) Source # | |
| (Ord a, Minimal a, (Additive - Monoid) (Max a), (Multiplicative - Monoid) a) => Semiring (Max a) Source # | |