semiring-num-0.3.0.0: Basic semiring class and instances

Data.Semiring

Description

Synopsis

# Documentation

class Semiring a where Source #

A Semiring is like the the combination of two Monoids. The first is called <+>; it has the identity element zero, and it is commutative. The second is called <.>; it has identity element one, and it must distribute over <+>.

# Laws

## Normal Monoid laws

• (a <+> b) <+> c = a <+> (b <+> c)
• zero <+> a = a <+> zero = a
• (a <.> b) <.> c = a <.> (b <.> c)
• one <.> a = a <.> one = a

## Commutativity of <+>

• a <+> b = b <+> a

## Distribution of <.> over <+>

• a <.> (b <+> c) = (a <.> b) <+> (a <.> c)
• (a <+> b) <.> c = (a <.> c) <+> (b <.> c)

## Annihilation

• zero <.> a = a <.> zero = zero

Methods

zero :: a Source #

The identity of <+>.

one :: a Source #

The identity of <.>.

(<.>) :: a -> a -> a infixl 7 Source #

An associative binary operation, which distributes over <+>.

(<+>) :: a -> a -> a infixl 6 Source #

An associative, commutative binary operation.

zero :: Num a => a Source #

The identity of <+>.

one :: Num a => a Source #

The identity of <.>.

(<+>) :: Num a => a -> a -> a infixl 6 Source #

An associative, commutative binary operation.

(<.>) :: Num a => a -> a -> a infixl 7 Source #

An associative binary operation, which distributes over <+>.

Instances

 Source # Methods(<.>) :: Bool -> Bool -> Bool Source #(<+>) :: Bool -> Bool -> Bool Source # Source # Methods Source # Methods Source # Methods(<.>) :: Int -> Int -> Int Source #(<+>) :: Int -> Int -> Int Source # Source # Methods(<.>) :: Int8 -> Int8 -> Int8 Source #(<+>) :: Int8 -> Int8 -> Int8 Source # Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods(<.>) :: Word -> Word -> Word Source #(<+>) :: Word -> Word -> Word Source # Source # Methods Source # Methods Source # Methods Source # Methods Semiring () Source # Methodszero :: () Source #one :: () Source #(<.>) :: () -> () -> () Source #(<+>) :: () -> () -> () Source # Source # Methods Source # Methods(<.>) :: CDev -> CDev -> CDev Source #(<+>) :: CDev -> CDev -> CDev Source # Source # Methods(<.>) :: CIno -> CIno -> CIno Source #(<+>) :: CIno -> CIno -> CIno Source # Source # Methods Source # Methods(<.>) :: COff -> COff -> COff Source #(<+>) :: COff -> COff -> COff Source # Source # Methods(<.>) :: CPid -> CPid -> CPid Source #(<+>) :: CPid -> CPid -> CPid Source # Source # Methods Source # Methods(<.>) :: CGid -> CGid -> CGid Source #(<+>) :: CGid -> CGid -> CGid Source # Source # Methods Source # Methods(<.>) :: CUid -> CUid -> CUid Source #(<+>) :: CUid -> CUid -> CUid Source # Source # Methods(<.>) :: CCc -> CCc -> CCc Source #(<+>) :: CCc -> CCc -> CCc Source # Source # Methods Source # Methods Source # Methods Source # Methods(<.>) :: Fd -> Fd -> Fd Source #(<+>) :: Fd -> Fd -> Fd Source # Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods(<.>) :: CInt -> CInt -> CInt Source #(<+>) :: CInt -> CInt -> CInt Source # Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods Source # Methods(<.>) :: All -> All -> All Source #(<+>) :: All -> All -> All Source # Source # Methods(<.>) :: Any -> Any -> Any Source #(<+>) :: Any -> Any -> Any Source # Semiring a => Semiring [a] Source # A polynomial in x can be defined as a list of its coefficients, where the ith element is the coefficient of x^i. This is the semiring for such a list. Adapted from here. Methodszero :: [a] Source #one :: [a] Source #(<.>) :: [a] -> [a] -> [a] Source #(<+>) :: [a] -> [a] -> [a] Source # Integral a => Semiring (Ratio a) Source # Methods(<.>) :: Ratio a -> Ratio a -> Ratio a Source #(<+>) :: Ratio a -> Ratio a -> Ratio a Source # Semiring a => Semiring (Identity a) Source # Methods(<.>) :: Identity a -> Identity a -> Identity a Source #(<+>) :: Identity a -> Identity a -> Identity a Source # HasResolution a => Semiring (Fixed a) Source # Methods(<.>) :: Fixed a -> Fixed a -> Fixed a Source #(<+>) :: Fixed a -> Fixed a -> Fixed a Source # RealFloat a => Semiring (Complex a) Source # Methods(<.>) :: Complex a -> Complex a -> Complex a Source #(<+>) :: Complex a -> Complex a -> Complex a Source # Semiring a => Semiring (Sum a) Source # Methods(<.>) :: Sum a -> Sum a -> Sum a Source #(<+>) :: Sum a -> Sum a -> Sum a Source # Semiring a => Semiring (Product a) Source # Methods(<.>) :: Product a -> Product a -> Product a Source #(<+>) :: Product a -> Product a -> Product a Source # (Ord a, Monoid a) => Semiring (Set a) Source # The Set Semiring is union for <+>, and a Cartesian product for <.>. Methods(<.>) :: Set a -> Set a -> Set a Source #(<+>) :: Set a -> Set a -> Set a Source # (Semiring a, Ord a) => Semiring (Max a) Source # Methods(<.>) :: Max a -> Max a -> Max a Source #(<+>) :: Max a -> Max a -> Max a Source # (Semiring a, Ord a) => Semiring (Min a) Source # Methods(<.>) :: Min a -> Min a -> Min a Source #(<+>) :: Min a -> Min a -> Min a Source # Semiring a => Semiring (Mul a) Source # Methods(<.>) :: Mul a -> Mul a -> Mul a Source #(<+>) :: Mul a -> Mul a -> Mul a Source # Semiring a => Semiring (Add a) Source # Methods(<.>) :: Add a -> Add a -> Add a Source #(<+>) :: Add a -> Add a -> Add a Source # (Ord a, Semiring a) => Semiring (Viterbi a) Source # Methods(<.>) :: Viterbi a -> Viterbi a -> Viterbi a Source #(<+>) :: Viterbi a -> Viterbi a -> Viterbi a Source # (Ord a, Num a) => Semiring (Łukasiewicz a) Source # Methods (Integral a, Semiring a) => Semiring (Division a) Source # Only expects positive numbers Methods(<.>) :: Division a -> Division a -> Division a Source #(<+>) :: Division a -> Division a -> Division a Source # (Bounded a, Ord a) => Semiring (Bottleneck a) Source # Methods(<.>) :: Bottleneck a -> Bottleneck a -> Bottleneck a Source #(<+>) :: Bottleneck a -> Bottleneck a -> Bottleneck a Source # Semiring (Free a) Source # Methods(<.>) :: Free a -> Free a -> Free a Source #(<+>) :: Free a -> Free a -> Free a Source # Semiring b => Semiring (a -> b) Source # The (->) instance is analogous to the one for Monoid. Methodszero :: a -> b Source #one :: a -> b Source #(<.>) :: (a -> b) -> (a -> b) -> a -> b Source #(<+>) :: (a -> b) -> (a -> b) -> a -> b Source # (Semiring a, Semiring b) => Semiring (a, b) Source # Methodszero :: (a, b) Source #one :: (a, b) Source #(<.>) :: (a, b) -> (a, b) -> (a, b) Source #(<+>) :: (a, b) -> (a, b) -> (a, b) Source # (Semiring a, Semiring b, Semiring c) => Semiring (a, b, c) Source # Methodszero :: (a, b, c) Source #one :: (a, b, c) Source #(<.>) :: (a, b, c) -> (a, b, c) -> (a, b, c) Source #(<+>) :: (a, b, c) -> (a, b, c) -> (a, b, c) Source # Semiring a => Semiring (Const * a b) Source # Methodszero :: Const * a b Source #one :: Const * a b Source #(<.>) :: Const * a b -> Const * a b -> Const * a b Source #(<+>) :: Const * a b -> Const * a b -> Const * a b Source # (Semiring a, Semiring b, Semiring c, Semiring d) => Semiring (a, b, c, d) Source # Methodszero :: (a, b, c, d) Source #one :: (a, b, c, d) Source #(<.>) :: (a, b, c, d) -> (a, b, c, d) -> (a, b, c, d) Source #(<+>) :: (a, b, c, d) -> (a, b, c, d) -> (a, b, c, d) Source # (Semiring a, Semiring b, Semiring c, Semiring d, Semiring e) => Semiring (a, b, c, d, e) Source # Methodszero :: (a, b, c, d, e) Source #one :: (a, b, c, d, e) Source #(<.>) :: (a, b, c, d, e) -> (a, b, c, d, e) -> (a, b, c, d, e) Source #(<+>) :: (a, b, c, d, e) -> (a, b, c, d, e) -> (a, b, c, d, e) Source #

Monoid under <+>. Analogous to Sum, but uses the Semiring constraint, rather than Num.

Constructors

Instances

 Source # Methods(>>=) :: Add a -> (a -> Add b) -> Add b #(>>) :: Add a -> Add b -> Add b #return :: a -> Add a #fail :: String -> Add a # Source # Methodsfmap :: (a -> b) -> Add a -> Add b #(<$) :: a -> Add b -> Add a # Source # Methodspure :: a -> Add a #(<*>) :: Add (a -> b) -> Add a -> Add b #(*>) :: Add a -> Add b -> Add b #(<*) :: Add a -> Add b -> Add a # Source # Methodsfold :: Monoid m => Add m -> m #foldMap :: Monoid m => (a -> m) -> Add a -> m #foldr :: (a -> b -> b) -> b -> Add a -> b #foldr' :: (a -> b -> b) -> b -> Add a -> b #foldl :: (b -> a -> b) -> b -> Add a -> b #foldl' :: (b -> a -> b) -> b -> Add a -> b #foldr1 :: (a -> a -> a) -> Add a -> a #foldl1 :: (a -> a -> a) -> Add a -> a #toList :: Add a -> [a] #null :: Add a -> Bool #length :: Add a -> Int #elem :: Eq a => a -> Add a -> Bool #maximum :: Ord a => Add a -> a #minimum :: Ord a => Add a -> a #sum :: Num a => Add a -> a #product :: Num a => Add a -> a # Source # Associated Typestype Rep1 (Add :: * -> *) :: * -> * # Methodsfrom1 :: Add a -> Rep1 Add a #to1 :: Rep1 Add a -> Add a # Bounded a => Bounded (Add a) Source # MethodsminBound :: Add a #maxBound :: Add a # Enum a => Enum (Add a) Source # Methodssucc :: Add a -> Add a #pred :: Add a -> Add a #toEnum :: Int -> Add a #fromEnum :: Add a -> Int #enumFrom :: Add a -> [Add a] #enumFromThen :: Add a -> Add a -> [Add a] #enumFromTo :: Add a -> Add a -> [Add a] #enumFromThenTo :: Add a -> Add a -> Add a -> [Add a] # Eq a => Eq (Add a) Source # Methods(==) :: Add a -> Add a -> Bool #(/=) :: Add a -> Add a -> Bool # Num a => Num (Add a) Source # Methods(+) :: Add a -> Add a -> Add a #(-) :: Add a -> Add a -> Add a #(*) :: Add a -> Add a -> Add a #negate :: Add a -> Add a #abs :: Add a -> Add a #signum :: Add a -> Add a # Ord a => Ord (Add a) Source # Methodscompare :: Add a -> Add a -> Ordering #(<) :: Add a -> Add a -> Bool #(<=) :: Add a -> Add a -> Bool #(>) :: Add a -> Add a -> Bool #(>=) :: Add a -> Add a -> Bool #max :: Add a -> Add a -> Add a #min :: Add a -> Add a -> Add a # Read a => Read (Add a) Source # MethodsreadsPrec :: Int -> ReadS (Add a) #readList :: ReadS [Add a] #readPrec :: ReadPrec (Add a) # Show a => Show (Add a) Source # MethodsshowsPrec :: Int -> Add a -> ShowS #show :: Add a -> String #showList :: [Add a] -> ShowS # Generic (Add a) Source # Associated Typestype Rep (Add a) :: * -> * # Methodsfrom :: Add a -> Rep (Add a) x #to :: Rep (Add a) x -> Add a # Semiring a => Monoid (Add a) Source # Methodsmempty :: Add a #mappend :: Add a -> Add a -> Add a #mconcat :: [Add a] -> Add a # Semiring a => Semiring (Add a) Source # Methods(<.>) :: Add a -> Add a -> Add a Source #(<+>) :: Add a -> Add a -> Add a Source # type Rep1 Add Source # type Rep1 Add = D1 (MetaData "Add" "Data.Semiring" "semiring-num-0.3.0.0-E53seAEysQ85CFp81usfTw" True) (C1 (MetaCons "Add" PrefixI True) (S1 (MetaSel (Just Symbol "getAdd") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1)) type Rep (Add a) Source # type Rep (Add a) = D1 (MetaData "Add" "Data.Semiring" "semiring-num-0.3.0.0-E53seAEysQ85CFp81usfTw" True) (C1 (MetaCons "Add" PrefixI True) (S1 (MetaSel (Just Symbol "getAdd") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a))) newtype Mul a Source # Monoid under <.>. Analogous to Product, but uses the Semiring constraint, rather than Num. Constructors  Mul FieldsgetMul :: a Instances  Source # Methods(>>=) :: Mul a -> (a -> Mul b) -> Mul b #(>>) :: Mul a -> Mul b -> Mul b #return :: a -> Mul a #fail :: String -> Mul a # Source # Methodsfmap :: (a -> b) -> Mul a -> Mul b #(<$) :: a -> Mul b -> Mul a # Source # Methodspure :: a -> Mul a #(<*>) :: Mul (a -> b) -> Mul a -> Mul b #(*>) :: Mul a -> Mul b -> Mul b #(<*) :: Mul a -> Mul b -> Mul a # Source # Methodsfold :: Monoid m => Mul m -> m #foldMap :: Monoid m => (a -> m) -> Mul a -> m #foldr :: (a -> b -> b) -> b -> Mul a -> b #foldr' :: (a -> b -> b) -> b -> Mul a -> b #foldl :: (b -> a -> b) -> b -> Mul a -> b #foldl' :: (b -> a -> b) -> b -> Mul a -> b #foldr1 :: (a -> a -> a) -> Mul a -> a #foldl1 :: (a -> a -> a) -> Mul a -> a #toList :: Mul a -> [a] #null :: Mul a -> Bool #length :: Mul a -> Int #elem :: Eq a => a -> Mul a -> Bool #maximum :: Ord a => Mul a -> a #minimum :: Ord a => Mul a -> a #sum :: Num a => Mul a -> a #product :: Num a => Mul a -> a # Source # Associated Typestype Rep1 (Mul :: * -> *) :: * -> * # Methodsfrom1 :: Mul a -> Rep1 Mul a #to1 :: Rep1 Mul a -> Mul a # Bounded a => Bounded (Mul a) Source # MethodsminBound :: Mul a #maxBound :: Mul a # Enum a => Enum (Mul a) Source # Methodssucc :: Mul a -> Mul a #pred :: Mul a -> Mul a #toEnum :: Int -> Mul a #fromEnum :: Mul a -> Int #enumFrom :: Mul a -> [Mul a] #enumFromThen :: Mul a -> Mul a -> [Mul a] #enumFromTo :: Mul a -> Mul a -> [Mul a] #enumFromThenTo :: Mul a -> Mul a -> Mul a -> [Mul a] # Eq a => Eq (Mul a) Source # Methods(==) :: Mul a -> Mul a -> Bool #(/=) :: Mul a -> Mul a -> Bool # Num a => Num (Mul a) Source # Methods(+) :: Mul a -> Mul a -> Mul a #(-) :: Mul a -> Mul a -> Mul a #(*) :: Mul a -> Mul a -> Mul a #negate :: Mul a -> Mul a #abs :: Mul a -> Mul a #signum :: Mul a -> Mul a # Ord a => Ord (Mul a) Source # Methodscompare :: Mul a -> Mul a -> Ordering #(<) :: Mul a -> Mul a -> Bool #(<=) :: Mul a -> Mul a -> Bool #(>) :: Mul a -> Mul a -> Bool #(>=) :: Mul a -> Mul a -> Bool #max :: Mul a -> Mul a -> Mul a #min :: Mul a -> Mul a -> Mul a # Read a => Read (Mul a) Source # MethodsreadsPrec :: Int -> ReadS (Mul a) #readList :: ReadS [Mul a] #readPrec :: ReadPrec (Mul a) # Show a => Show (Mul a) Source # MethodsshowsPrec :: Int -> Mul a -> ShowS #show :: Mul a -> String #showList :: [Mul a] -> ShowS # Generic (Mul a) Source # Associated Typestype Rep (Mul a) :: * -> * # Methodsfrom :: Mul a -> Rep (Mul a) x #to :: Rep (Mul a) x -> Mul a # Semiring a => Monoid (Mul a) Source # Methodsmempty :: Mul a #mappend :: Mul a -> Mul a -> Mul a #mconcat :: [Mul a] -> Mul a # Semiring a => Semiring (Mul a) Source # Methods(<.>) :: Mul a -> Mul a -> Mul a Source #(<+>) :: Mul a -> Mul a -> Mul a Source # type Rep1 Mul Source # type Rep1 Mul = D1 (MetaData "Mul" "Data.Semiring" "semiring-num-0.3.0.0-E53seAEysQ85CFp81usfTw" True) (C1 (MetaCons "Mul" PrefixI True) (S1 (MetaSel (Just Symbol "getMul") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1)) type Rep (Mul a) Source # type Rep (Mul a) = D1 (MetaData "Mul" "Data.Semiring" "semiring-num-0.3.0.0-E53seAEysQ85CFp81usfTw" True) (C1 (MetaCons "Mul" PrefixI True) (S1 (MetaSel (Just Symbol "getMul") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)))

newtype Max a Source #

The "Arctic" or max-plus semiring. It is a semiring where: <+> = max zero = ∞ (represented by Nothing) <.> = <+> (over the inner value) one = zero (over the inner value)

Constructors

 Max FieldsgetMax :: Maybe a

Instances

 Source # Methods(>>=) :: Max a -> (a -> Max b) -> Max b #(>>) :: Max a -> Max b -> Max b #return :: a -> Max a #fail :: String -> Max a # Source # Methodsfmap :: (a -> b) -> Max a -> Max b #(<$) :: a -> Max b -> Max a # Source # Methodspure :: a -> Max a #(<*>) :: Max (a -> b) -> Max a -> Max b #(*>) :: Max a -> Max b -> Max b #(<*) :: Max a -> Max b -> Max a # Source # Methodsfold :: Monoid m => Max m -> m #foldMap :: Monoid m => (a -> m) -> Max a -> m #foldr :: (a -> b -> b) -> b -> Max a -> b #foldr' :: (a -> b -> b) -> b -> Max a -> b #foldl :: (b -> a -> b) -> b -> Max a -> b #foldl' :: (b -> a -> b) -> b -> Max a -> b #foldr1 :: (a -> a -> a) -> Max a -> a #foldl1 :: (a -> a -> a) -> Max a -> a #toList :: Max a -> [a] #null :: Max a -> Bool #length :: Max a -> Int #elem :: Eq a => a -> Max a -> Bool #maximum :: Ord a => Max a -> a #minimum :: Ord a => Max a -> a #sum :: Num a => Max a -> a #product :: Num a => Max a -> a # Source # Associated Typestype Rep1 (Max :: * -> *) :: * -> * # Methodsfrom1 :: Max a -> Rep1 Max a #to1 :: Rep1 Max a -> Max a # Eq a => Eq (Max a) Source # Methods(==) :: Max a -> Max a -> Bool #(/=) :: Max a -> Max a -> Bool # Ord a => Ord (Max a) Source # Methodscompare :: Max a -> Max a -> Ordering #(<) :: Max a -> Max a -> Bool #(<=) :: Max a -> Max a -> Bool #(>) :: Max a -> Max a -> Bool #(>=) :: Max a -> Max a -> Bool #max :: Max a -> Max a -> Max a #min :: Max a -> Max a -> Max a # Read a => Read (Max a) Source # MethodsreadsPrec :: Int -> ReadS (Max a) #readList :: ReadS [Max a] #readPrec :: ReadPrec (Max a) # Show a => Show (Max a) Source # MethodsshowsPrec :: Int -> Max a -> ShowS #show :: Max a -> String #showList :: [Max a] -> ShowS # Generic (Max a) Source # Associated Typestype Rep (Max a) :: * -> * # Methodsfrom :: Max a -> Rep (Max a) x #to :: Rep (Max a) x -> Max a # Ord a => Monoid (Max a) Source # Methodsmempty :: Max a #mappend :: Max a -> Max a -> Max a #mconcat :: [Max a] -> Max a # (Semiring a, Ord a) => Semiring (Max a) Source # Methods(<.>) :: Max a -> Max a -> Max a Source #(<+>) :: Max a -> Max a -> Max a Source # type Rep1 Max Source # type Rep1 Max = D1 (MetaData "Max" "Data.Semiring" "semiring-num-0.3.0.0-E53seAEysQ85CFp81usfTw" True) (C1 (MetaCons "Max" PrefixI True) (S1 (MetaSel (Just Symbol "getMax") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec1 Maybe))) type Rep (Max a) Source # type Rep (Max a) = D1 (MetaData "Max" "Data.Semiring" "semiring-num-0.3.0.0-E53seAEysQ85CFp81usfTw" True) (C1 (MetaCons "Max" PrefixI True) (S1 (MetaSel (Just Symbol "getMax") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe a)))) newtype Min a Source # The "Tropical" or min-plus semiring. It is a semiring where: <+> = min zero = -∞ (represented by Nothing) <.> = <+> (over the inner value) one = zero (over the inner value) Constructors  Min FieldsgetMin :: Maybe a Instances  Source # Methods(>>=) :: Min a -> (a -> Min b) -> Min b #(>>) :: Min a -> Min b -> Min b #return :: a -> Min a #fail :: String -> Min a # Source # Methodsfmap :: (a -> b) -> Min a -> Min b #(<$) :: a -> Min b -> Min a # Source # Methodspure :: a -> Min a #(<*>) :: Min (a -> b) -> Min a -> Min b #(*>) :: Min a -> Min b -> Min b #(<*) :: Min a -> Min b -> Min a # Source # Methodsfold :: Monoid m => Min m -> m #foldMap :: Monoid m => (a -> m) -> Min a -> m #foldr :: (a -> b -> b) -> b -> Min a -> b #foldr' :: (a -> b -> b) -> b -> Min a -> b #foldl :: (b -> a -> b) -> b -> Min a -> b #foldl' :: (b -> a -> b) -> b -> Min a -> b #foldr1 :: (a -> a -> a) -> Min a -> a #foldl1 :: (a -> a -> a) -> Min a -> a #toList :: Min a -> [a] #null :: Min a -> Bool #length :: Min a -> Int #elem :: Eq a => a -> Min a -> Bool #maximum :: Ord a => Min a -> a #minimum :: Ord a => Min a -> a #sum :: Num a => Min a -> a #product :: Num a => Min a -> a # Source # Associated Typestype Rep1 (Min :: * -> *) :: * -> * # Methodsfrom1 :: Min a -> Rep1 Min a #to1 :: Rep1 Min a -> Min a # Eq a => Eq (Min a) Source # Methods(==) :: Min a -> Min a -> Bool #(/=) :: Min a -> Min a -> Bool # Ord a => Ord (Min a) Source # Methodscompare :: Min a -> Min a -> Ordering #(<) :: Min a -> Min a -> Bool #(<=) :: Min a -> Min a -> Bool #(>) :: Min a -> Min a -> Bool #(>=) :: Min a -> Min a -> Bool #max :: Min a -> Min a -> Min a #min :: Min a -> Min a -> Min a # Read a => Read (Min a) Source # MethodsreadsPrec :: Int -> ReadS (Min a) #readList :: ReadS [Min a] #readPrec :: ReadPrec (Min a) # Show a => Show (Min a) Source # MethodsshowsPrec :: Int -> Min a -> ShowS #show :: Min a -> String #showList :: [Min a] -> ShowS # Generic (Min a) Source # Associated Typestype Rep (Min a) :: * -> * # Methodsfrom :: Min a -> Rep (Min a) x #to :: Rep (Min a) x -> Min a # Ord a => Monoid (Min a) Source # Methodsmempty :: Min a #mappend :: Min a -> Min a -> Min a #mconcat :: [Min a] -> Min a # (Semiring a, Ord a) => Semiring (Min a) Source # Methods(<.>) :: Min a -> Min a -> Min a Source #(<+>) :: Min a -> Min a -> Min a Source # type Rep1 Min Source # type Rep1 Min = D1 (MetaData "Min" "Data.Semiring" "semiring-num-0.3.0.0-E53seAEysQ85CFp81usfTw" True) (C1 (MetaCons "Min" PrefixI True) (S1 (MetaSel (Just Symbol "getMin") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec1 Maybe))) type Rep (Min a) Source # type Rep (Min a) = D1 (MetaData "Min" "Data.Semiring" "semiring-num-0.3.0.0-E53seAEysQ85CFp81usfTw" True) (C1 (MetaCons "Min" PrefixI True) (S1 (MetaSel (Just Symbol "getMin") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe a))))