semirings-0.7: two monoids as one, in holy haskimony

Safe Haskell | None
Language | Haskell98

Data.Star

Description

A class for *-semirings (pron. "star-semirings").

Synopsis

- class Semiring a => Star a where
  - star :: a -> a
  - aplus :: a -> a

# Documentation

class Semiring a => Star a where #

A Star semiring adds one operation, `star` to a `Semiring`, such that it follows the law:

    star x = one + x * star x = one + star x * x

Another operation, `aplus`, can be defined in terms of `star`:

    aplus x = x * star x

Minimal complete definition

star | aplus

Methods

star :: a -> a #

aplus :: a -> a #

#### Instances

Instances details

Star Mod2 # |
Instance details Defined in Data.Star Methods star :: Mod2 -> Mod2 # aplus :: Mod2 -> Mod2 #
Star () # |
Instance details Defined in Data.Star Methods star :: () -> () # aplus :: () -> () #
Star Bool # |
Instance details Defined in Data.Star Methods star :: Bool -> Bool # aplus :: Bool -> Bool #
Star (Proxy a) # |
Instance details Defined in Data.Star Methods star :: Proxy a -> Proxy a # aplus :: Proxy a -> Proxy a #
(Ord a, Monoid a, Extremum e) => Star (Tropical e a) # |
Instance details Defined in Data.Semiring.Tropical Methods star :: Tropical e a -> Tropical e a # aplus :: Tropical e a -> Tropical e a #
Star b => Star (a -> b) # |
Instance details Defined in Data.Star Methods star :: (a -> b) -> a -> b # aplus :: (a -> b) -> a -> b #