semirings-0.6: two monoids as one, in holy haskimony
Safe HaskellNone
LanguageHaskell98

Data.Semiring

Description

A class for semirings (types with two binary operations, one commutative and one associative, and two respective identities), with various general-purpose instances.

Synopsis

Semiring typeclass

class Semiring a where #

The class of semirings (types with two binary operations and two respective identities). One can think of a semiring as two monoids of the same underlying type, with the first being commutative. In the documentation, you will often see the first monoid being referred to as additive, and the second monoid being referred to as multiplicative, a typical convention when talking about semirings.

For any type R with a Num instance, the additive monoid is (R, +, 0) and the multiplicative monoid is (R, *, 1).

For Bool, the additive monoid is (Bool, ||, False) and the multiplicative monoid is (Bool, &&, True).

Instances should satisfy the following laws:

additive left identity
zero + x = x
additive right identity
x + zero = x
additive associativity
x + (y + z) = (x + y) + z
additive commutativity
x + y = y + x
multiplicative left identity
one * x = x
multiplicative right identity
x * one = x
multiplicative associativity
x * (y * z) = (x * y) * z
left-distributivity of * over +
x * (y + z) = (x * y) + (x * z)
right-distributivity of * over +
(x + y) * z = (x * z) + (y * z)
annihilation
zero * x = x * zero = zero

Minimal complete definition

plus, times, (zero, one | fromNatural)

Methods

plus infixl 6 #

Arguments

:: a 
-> a 
-> a

Commutative Operation

zero #

Arguments

:: a

Commutative Unit

times infixl 7 #

Arguments

:: a 
-> a 
-> a

Associative Operation

one #

Arguments

:: a

Associative Unit

fromNatural #

Arguments

:: Natural 
-> a

Homomorphism of additive semigroups

Instances

Instances details
Semiring CChar # 
Instance details

Defined in Data.Semiring

Semiring CClock # 
Instance details

Defined in Data.Semiring

Semiring CDouble # 
Instance details

Defined in Data.Semiring

Semiring CFloat # 
Instance details

Defined in Data.Semiring

Semiring CInt # 
Instance details

Defined in Data.Semiring

Methods

plus :: CInt -> CInt -> CInt #

zero :: CInt #

times :: CInt -> CInt -> CInt #

one :: CInt #

fromNatural :: Natural -> CInt #

Semiring CIntMax # 
Instance details

Defined in Data.Semiring

Semiring CIntPtr # 
Instance details

Defined in Data.Semiring

Semiring CLLong # 
Instance details

Defined in Data.Semiring

Semiring CLong # 
Instance details

Defined in Data.Semiring

Semiring CPtrdiff # 
Instance details

Defined in Data.Semiring

Semiring CSChar # 
Instance details

Defined in Data.Semiring

Semiring CSUSeconds # 
Instance details

Defined in Data.Semiring

Semiring CShort # 
Instance details

Defined in Data.Semiring

Semiring CSigAtomic # 
Instance details

Defined in Data.Semiring

Semiring CSize # 
Instance details

Defined in Data.Semiring

Semiring CTime # 
Instance details

Defined in Data.Semiring

Semiring CUChar # 
Instance details

Defined in Data.Semiring

Semiring CUInt # 
Instance details

Defined in Data.Semiring

Semiring CUIntMax # 
Instance details

Defined in Data.Semiring

Semiring CUIntPtr # 
Instance details

Defined in Data.Semiring

Semiring CULLong # 
Instance details

Defined in Data.Semiring

Semiring CULong # 
Instance details

Defined in Data.Semiring

Semiring CUSeconds # 
Instance details

Defined in Data.Semiring

Semiring CUShort # 
Instance details

Defined in Data.Semiring

Semiring CWchar # 
Instance details

Defined in Data.Semiring

Semiring IntPtr # 
Instance details

Defined in Data.Semiring

Semiring WordPtr # 
Instance details

Defined in Data.Semiring

Semiring Int16 # 
Instance details

Defined in Data.Semiring

Semiring Int32 # 
Instance details

Defined in Data.Semiring

Semiring Int64 # 
Instance details

Defined in Data.Semiring

Semiring Int8 # 
Instance details

Defined in Data.Semiring

Methods

plus :: Int8 -> Int8 -> Int8 #

zero :: Int8 #

times :: Int8 -> Int8 -> Int8 #

one :: Int8 #

fromNatural :: Natural -> Int8 #

Semiring Word16 # 
Instance details

Defined in Data.Semiring

Semiring Word32 # 
Instance details

Defined in Data.Semiring

Semiring Word64 # 
Instance details

Defined in Data.Semiring

Semiring Word8 # 
Instance details

Defined in Data.Semiring

Semiring CCc # 
Instance details

Defined in Data.Semiring

Methods

plus :: CCc -> CCc -> CCc #

zero :: CCc #

times :: CCc -> CCc -> CCc #

one :: CCc #

fromNatural :: Natural -> CCc #

Semiring CDev # 
Instance details

Defined in Data.Semiring

Methods

plus :: CDev -> CDev -> CDev #

zero :: CDev #

times :: CDev -> CDev -> CDev #

one :: CDev #

fromNatural :: Natural -> CDev #

Semiring CGid # 
Instance details

Defined in Data.Semiring

Methods

plus :: CGid -> CGid -> CGid #

zero :: CGid #

times :: CGid -> CGid -> CGid #

one :: CGid #

fromNatural :: Natural -> CGid #

Semiring CIno # 
Instance details

Defined in Data.Semiring

Methods

plus :: CIno -> CIno -> CIno #

zero :: CIno #

times :: CIno -> CIno -> CIno #

one :: CIno #

fromNatural :: Natural -> CIno #

Semiring CMode # 
Instance details

Defined in Data.Semiring

Semiring CNlink # 
Instance details

Defined in Data.Semiring

Semiring COff # 
Instance details

Defined in Data.Semiring

Methods

plus :: COff -> COff -> COff #

zero :: COff #

times :: COff -> COff -> COff #

one :: COff #

fromNatural :: Natural -> COff #

Semiring CPid # 
Instance details

Defined in Data.Semiring

Methods

plus :: CPid -> CPid -> CPid #

zero :: CPid #

times :: CPid -> CPid -> CPid #

one :: CPid #

fromNatural :: Natural -> CPid #

Semiring CRLim # 
Instance details

Defined in Data.Semiring

Semiring CSpeed # 
Instance details

Defined in Data.Semiring

Semiring CSsize # 
Instance details

Defined in Data.Semiring

Semiring CTcflag # 
Instance details

Defined in Data.Semiring

Semiring CUid # 
Instance details

Defined in Data.Semiring

Methods

plus :: CUid -> CUid -> CUid #

zero :: CUid #

times :: CUid -> CUid -> CUid #

one :: CUid #

fromNatural :: Natural -> CUid #

Semiring Fd # 
Instance details

Defined in Data.Semiring

Methods

plus :: Fd -> Fd -> Fd #

zero :: Fd #

times :: Fd -> Fd -> Fd #

one :: Fd #

fromNatural :: Natural -> Fd #

Semiring Mod2 # 
Instance details

Defined in Data.Semiring

Methods

plus :: Mod2 -> Mod2 -> Mod2 #

zero :: Mod2 #

times :: Mod2 -> Mod2 -> Mod2 #

one :: Mod2 #

fromNatural :: Natural -> Mod2 #

Semiring Integer # 
Instance details

Defined in Data.Semiring

Semiring Natural # 
Instance details

Defined in Data.Semiring

Semiring () # 
Instance details

Defined in Data.Semiring

Methods

plus :: () -> () -> () #

zero :: () #

times :: () -> () -> () #

one :: () #

fromNatural :: Natural -> () #

Semiring Bool # 
Instance details

Defined in Data.Semiring

Methods

plus :: Bool -> Bool -> Bool #

zero :: Bool #

times :: Bool -> Bool -> Bool #

one :: Bool #

fromNatural :: Natural -> Bool #

Semiring Double # 
Instance details

Defined in Data.Semiring

Semiring Float # 
Instance details

Defined in Data.Semiring

Semiring Int # 
Instance details

Defined in Data.Semiring

Methods

plus :: Int -> Int -> Int #

zero :: Int #

times :: Int -> Int -> Int #

one :: Int #

fromNatural :: Natural -> Int #

Semiring Word # 
Instance details

Defined in Data.Semiring

Methods

plus :: Word -> Word -> Word #

zero :: Word #

times :: Word -> Word -> Word #

one :: Word #

fromNatural :: Natural -> Word #

Ring a => Semiring (Complex a) #

This instance can suffer due to floating point arithmetic.

Instance details

Defined in Data.Semiring

Methods

plus :: Complex a -> Complex a -> Complex a #

zero :: Complex a #

times :: Complex a -> Complex a -> Complex a #

one :: Complex a #

fromNatural :: Natural -> Complex a #

Semiring a => Semiring (Equivalence a) # 
Instance details

Defined in Data.Semiring

Semiring (Predicate a) # 
Instance details

Defined in Data.Semiring

Semiring a => Semiring (Identity a) # 
Instance details

Defined in Data.Semiring

Semiring a => Semiring (Down a) # 
Instance details

Defined in Data.Semiring

Methods

plus :: Down a -> Down a -> Down a #

zero :: Down a #

times :: Down a -> Down a -> Down a #

one :: Down a #

fromNatural :: Natural -> Down a #

Semiring a => Semiring (Dual a) # 
Instance details

Defined in Data.Semiring

Methods

plus :: Dual a -> Dual a -> Dual a #

zero :: Dual a #

times :: Dual a -> Dual a -> Dual a #

one :: Dual a #

fromNatural :: Natural -> Dual a #

Integral a => Semiring (Ratio a) # 
Instance details

Defined in Data.Semiring

Methods

plus :: Ratio a -> Ratio a -> Ratio a #

zero :: Ratio a #

times :: Ratio a -> Ratio a -> Ratio a #

one :: Ratio a #

fromNatural :: Natural -> Ratio a #

(Ord a, Monoid a) => Semiring (Set a) #

The multiplication laws are satisfied for any underlying Monoid, so we require a Monoid constraint instead of a Semiring constraint since times can use the context of either.

Instance details

Defined in Data.Semiring

Methods

plus :: Set a -> Set a -> Set a #

zero :: Set a #

times :: Set a -> Set a -> Set a #

one :: Set a #

fromNatural :: Natural -> Set a #

Semiring a => Semiring (IO a) # 
Instance details

Defined in Data.Semiring

Methods

plus :: IO a -> IO a -> IO a #

zero :: IO a #

times :: IO a -> IO a -> IO a #

one :: IO a #

fromNatural :: Natural -> IO a #

Num a => Semiring (WrappedFractional a) # 
Instance details

Defined in Data.Euclidean

Num a => Semiring (WrappedIntegral a) # 
Instance details

Defined in Data.Euclidean

(Coercible Int a, Monoid a) => Semiring (IntSetOf a) # 
Instance details

Defined in Data.Semiring

Num a => Semiring (WrappedNum a) # 
Instance details

Defined in Data.Semiring

(Generic a, GSemiring (Rep a)) => Semiring (GenericSemiring a) # 
Instance details

Defined in Data.Semiring.Generic

(Eq a, Hashable a, Monoid a) => Semiring (HashSet a) #

The multiplication laws are satisfied for any underlying Monoid, so we require a Monoid constraint instead of a Semiring constraint since times can use the context of either.

Instance details

Defined in Data.Semiring

Methods

plus :: HashSet a -> HashSet a -> HashSet a #

zero :: HashSet a #

times :: HashSet a -> HashSet a -> HashSet a #

one :: HashSet a #

fromNatural :: Natural -> HashSet a #

Semiring a => Semiring (Maybe a) # 
Instance details

Defined in Data.Semiring

Methods

plus :: Maybe a -> Maybe a -> Maybe a #

zero :: Maybe a #

times :: Maybe a -> Maybe a -> Maybe a #

one :: Maybe a #

fromNatural :: Natural -> Maybe a #

HasResolution a => Semiring (Fixed a) # 
Instance details

Defined in Data.Semiring

Methods

plus :: Fixed a -> Fixed a -> Fixed a #

zero :: Fixed a #

times :: Fixed a -> Fixed a -> Fixed a #

one :: Fixed a #

fromNatural :: Natural -> Fixed a #

Semiring a => Semiring (Op a b) # 
Instance details

Defined in Data.Semiring

Methods

plus :: Op a b -> Op a b -> Op a b #

zero :: Op a b #

times :: Op a b -> Op a b -> Op a b #

one :: Op a b #

fromNatural :: Natural -> Op a b #

Semiring (Proxy a) # 
Instance details

Defined in Data.Semiring

Methods

plus :: Proxy a -> Proxy a -> Proxy a #

zero :: Proxy a #

times :: Proxy a -> Proxy a -> Proxy a #

one :: Proxy a #

fromNatural :: Natural -> Proxy a #

(Ord k, Monoid k, Semiring v) => Semiring (Map k v) #

The multiplication laws are satisfied for any underlying Monoid as the key type, so we require a Monoid constraint instead of a Semiring constraint since times can use the context of either.

Instance details

Defined in Data.Semiring

Methods

plus :: Map k v -> Map k v -> Map k v #

zero :: Map k v #

times :: Map k v -> Map k v -> Map k v #

one :: Map k v #

fromNatural :: Natural -> Map k v #

(Coercible Int k, Monoid k, Semiring v) => Semiring (IntMapOf k v) # 
Instance details

Defined in Data.Semiring

Methods

plus :: IntMapOf k v -> IntMapOf k v -> IntMapOf k v #

zero :: IntMapOf k v #

times :: IntMapOf k v -> IntMapOf k v -> IntMapOf k v #

one :: IntMapOf k v #

fromNatural :: Natural -> IntMapOf k v #

(Ord a, Monoid a, Extremum e) => Semiring (Tropical e a) # 
Instance details

Defined in Data.Semiring.Tropical

Methods

plus :: Tropical e a -> Tropical e a -> Tropical e a #

zero :: Tropical e a #

times :: Tropical e a -> Tropical e a -> Tropical e a #

one :: Tropical e a #

fromNatural :: Natural -> Tropical e a #

(Eq k, Hashable k, Monoid k, Semiring v) => Semiring (HashMap k v) #

The multiplication laws are satisfied for any underlying Monoid as the key type, so we require a Monoid constraint instead of a Semiring constraint since times can use the context of either.

Instance details

Defined in Data.Semiring

Methods

plus :: HashMap k v -> HashMap k v -> HashMap k v #

zero :: HashMap k v #

times :: HashMap k v -> HashMap k v -> HashMap k v #

one :: HashMap k v #

fromNatural :: Natural -> HashMap k v #

(Semiring a, Semiring b) => Semiring (a, b) # 
Instance details

Defined in Data.Semiring.Generic

Methods

plus :: (a, b) -> (a, b) -> (a, b) #

zero :: (a, b) #

times :: (a, b) -> (a, b) -> (a, b) #

one :: (a, b) #

fromNatural :: Natural -> (a, b) #

Semiring b => Semiring (a -> b) # 
Instance details

Defined in Data.Semiring

Methods

plus :: (a -> b) -> (a -> b) -> a -> b #

zero :: a -> b #

times :: (a -> b) -> (a -> b) -> a -> b #

one :: a -> b #

fromNatural :: Natural -> a -> b #

Semiring a => Semiring (Const a b) # 
Instance details

Defined in Data.Semiring

Methods

plus :: Const a b -> Const a b -> Const a b #

zero :: Const a b #

times :: Const a b -> Const a b -> Const a b #

one :: Const a b #

fromNatural :: Natural -> Const a b #

(Semiring a, Applicative f) => Semiring (Ap f a) # 
Instance details

Defined in Data.Semiring

Methods

plus :: Ap f a -> Ap f a -> Ap f a #

zero :: Ap f a #

times :: Ap f a -> Ap f a -> Ap f a #

one :: Ap f a #

fromNatural :: Natural -> Ap f a #

(Semiring a, Semiring b, Semiring c) => Semiring (a, b, c) # 
Instance details

Defined in Data.Semiring.Generic

Methods

plus :: (a, b, c) -> (a, b, c) -> (a, b, c) #

zero :: (a, b, c) #

times :: (a, b, c) -> (a, b, c) -> (a, b, c) #

one :: (a, b, c) #

fromNatural :: Natural -> (a, b, c) #

(Semiring a, Semiring b, Semiring c, Semiring d) => Semiring (a, b, c, d) # 
Instance details

Defined in Data.Semiring.Generic

Methods

plus :: (a, b, c, d) -> (a, b, c, d) -> (a, b, c, d) #

zero :: (a, b, c, d) #

times :: (a, b, c, d) -> (a, b, c, d) -> (a, b, c, d) #

one :: (a, b, c, d) #

fromNatural :: Natural -> (a, b, c, d) #

(Semiring a, Semiring b, Semiring c, Semiring d, Semiring e) => Semiring (a, b, c, d, e) # 
Instance details

Defined in Data.Semiring.Generic

Methods

plus :: (a, b, c, d, e) -> (a, b, c, d, e) -> (a, b, c, d, e) #

zero :: (a, b, c, d, e) #

times :: (a, b, c, d, e) -> (a, b, c, d, e) -> (a, b, c, d, e) #

one :: (a, b, c, d, e) #

fromNatural :: Natural -> (a, b, c, d, e) #

(Semiring a, Semiring b, Semiring c, Semiring d, Semiring e, Semiring f) => Semiring (a, b, c, d, e, f) # 
Instance details

Defined in Data.Semiring.Generic

Methods

plus :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> (a, b, c, d, e, f) #

zero :: (a, b, c, d, e, f) #

times :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> (a, b, c, d, e, f) #

one :: (a, b, c, d, e, f) #

fromNatural :: Natural -> (a, b, c, d, e, f) #

(Semiring a, Semiring b, Semiring c, Semiring d, Semiring e, Semiring f, Semiring g) => Semiring (a, b, c, d, e, f, g) # 
Instance details

Defined in Data.Semiring.Generic

Methods

plus :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) #

zero :: (a, b, c, d, e, f, g) #

times :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) #

one :: (a, b, c, d, e, f, g) #

fromNatural :: Natural -> (a, b, c, d, e, f, g) #

(+) :: Semiring a => a -> a -> a infixl 6 #

Infix shorthand for plus.

(*) :: Semiring a => a -> a -> a infixl 7 #

Infix shorthand for times.

(^) :: (Semiring a, Integral b) => a -> b -> a infixr 8 #

Raise a number to a non-negative integral power. If the power is negative, this will call error.

foldMapP :: (Foldable t, Semiring s) => (a -> s) -> t a -> s #

Map each element of the structure to a semiring, and combine the results using plus.

foldMapT :: (Foldable t, Semiring s) => (a -> s) -> t a -> s #

Map each element of the structure to a semiring, and combine the results using times.

sum :: (Foldable t, Semiring a) => t a -> a #

The sum function computes the additive sum of the elements in a structure. This function is lazy. For a strict version, see sum'.

product :: (Foldable t, Semiring a) => t a -> a #

The product function computes the product of the elements in a structure. This function is lazy. for a strict version, see product'.

sum' :: (Foldable t, Semiring a) => t a -> a #

The sum' function computes the additive sum of the elements in a structure. This function is strict. For a lazy version, see sum.

product' :: (Foldable t, Semiring a) => t a -> a #

The product' function computes the additive sum of the elements in a structure. This function is strict. For a lazy version, see product.

isZero :: (Eq a, Semiring a) => a -> Bool #

Is the value zero?

isOne :: (Eq a, Semiring a) => a -> Bool #

Is the value one?

Types

newtype Add a #

Monoid under plus. Analogous to Sum, but uses the Semiring constraint rather than Num.

Constructors

Add 

Fields

Instances

Instances details
Foldable Add # 
Instance details

Defined in Data.Semiring

Methods

fold :: Monoid m => Add m -> m #

foldMap :: Monoid m => (a -> m) -> Add a -> 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 #

Traversable Add # 
Instance details

Defined in Data.Semiring

Methods

traverse :: Applicative f => (a -> f b) -> Add a -> f (Add b) #

sequenceA :: Applicative f => Add (f a) -> f (Add a) #

mapM :: Monad m => (a -> m b) -> Add a -> m (Add b) #

sequence :: Monad m => Add (m a) -> m (Add a) #

Functor Add # 
Instance details

Defined in Data.Semiring

Methods

fmap :: (a -> b) -> Add a -> Add b #

(<$) :: a -> Add b -> Add a #

Generic1 Add # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep1 Add 
Instance details

Defined in Data.Semiring

type Rep1 Add = D1 ('MetaData "Add" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "Add" 'PrefixI 'True) (S1 ('MetaSel ('Just "getAdd") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))

Methods

from1 :: Add a -> Rep1 Add a #

to1 :: Rep1 Add a -> Add a #

Storable a => Storable (Add a) # 
Instance details

Defined in Data.Semiring

Methods

sizeOf :: Add a -> Int #

alignment :: Add a -> Int #

peekElemOff :: Ptr (Add a) -> Int -> IO (Add a) #

pokeElemOff :: Ptr (Add a) -> Int -> Add a -> IO () #

peekByteOff :: Ptr b -> Int -> IO (Add a) #

pokeByteOff :: Ptr b -> Int -> Add a -> IO () #

peek :: Ptr (Add a) -> IO (Add a) #

poke :: Ptr (Add a) -> Add a -> IO () #

Semiring a => Monoid (Add a) # 
Instance details

Defined in Data.Semiring

Methods

mempty :: Add a #

mappend :: Add a -> Add a -> Add a #

mconcat :: [Add a] -> Add a #

Semiring a => Semigroup (Add a) # 
Instance details

Defined in Data.Semiring

Methods

(<>) :: Add a -> Add a -> Add a #

sconcat :: NonEmpty (Add a) -> Add a #

stimes :: Integral b => b -> Add a -> Add a #

Bounded a => Bounded (Add a) # 
Instance details

Defined in Data.Semiring

Methods

minBound :: Add a #

maxBound :: Add a #

Enum a => Enum (Add a) # 
Instance details

Defined in Data.Semiring

Methods

succ :: 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] #

Generic (Add a) # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep (Add a) 
Instance details

Defined in Data.Semiring

type Rep (Add a) = D1 ('MetaData "Add" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "Add" 'PrefixI 'True) (S1 ('MetaSel ('Just "getAdd") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

Methods

from :: Add a -> Rep (Add a) x #

to :: Rep (Add a) x -> Add a #

Num a => Num (Add a) # 
Instance details

Defined in Data.Semiring

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 #

fromInteger :: Integer -> Add a #

Read a => Read (Add a) # 
Instance details

Defined in Data.Semiring

Fractional a => Fractional (Add a) # 
Instance details

Defined in Data.Semiring

Methods

(/) :: Add a -> Add a -> Add a #

recip :: Add a -> Add a #

fromRational :: Rational -> Add a #

Real a => Real (Add a) # 
Instance details

Defined in Data.Semiring

Methods

toRational :: Add a -> Rational #

RealFrac a => RealFrac (Add a) # 
Instance details

Defined in Data.Semiring

Methods

properFraction :: Integral b => Add a -> (b, Add a) #

truncate :: Integral b => Add a -> b #

round :: Integral b => Add a -> b #

ceiling :: Integral b => Add a -> b #

floor :: Integral b => Add a -> b #

Show a => Show (Add a) # 
Instance details

Defined in Data.Semiring

Methods

showsPrec :: Int -> Add a -> ShowS #

show :: Add a -> String #

showList :: [Add a] -> ShowS #

Eq a => Eq (Add a) # 
Instance details

Defined in Data.Semiring

Methods

(==) :: Add a -> Add a -> Bool #

(/=) :: Add a -> Add a -> Bool #

Ord a => Ord (Add a) # 
Instance details

Defined in Data.Semiring

Methods

compare :: 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 #

type Rep1 Add # 
Instance details

Defined in Data.Semiring

type Rep1 Add = D1 ('MetaData "Add" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "Add" 'PrefixI 'True) (S1 ('MetaSel ('Just "getAdd") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))
type Rep (Add a) # 
Instance details

Defined in Data.Semiring

type Rep (Add a) = D1 ('MetaData "Add" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "Add" 'PrefixI 'True) (S1 ('MetaSel ('Just "getAdd") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

newtype Mul a #

Monoid under times. Analogous to Product, but uses the Semiring constraint rather than Num.

Constructors

Mul 

Fields

Instances

Instances details
Foldable Mul # 
Instance details

Defined in Data.Semiring

Methods

fold :: Monoid m => Mul m -> m #

foldMap :: Monoid m => (a -> m) -> Mul a -> 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 #

Traversable Mul # 
Instance details

Defined in Data.Semiring

Methods

traverse :: Applicative f => (a -> f b) -> Mul a -> f (Mul b) #

sequenceA :: Applicative f => Mul (f a) -> f (Mul a) #

mapM :: Monad m => (a -> m b) -> Mul a -> m (Mul b) #

sequence :: Monad m => Mul (m a) -> m (Mul a) #

Functor Mul # 
Instance details

Defined in Data.Semiring

Methods

fmap :: (a -> b) -> Mul a -> Mul b #

(<$) :: a -> Mul b -> Mul a #

Generic1 Mul # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep1 Mul 
Instance details

Defined in Data.Semiring

type Rep1 Mul = D1 ('MetaData "Mul" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "Mul" 'PrefixI 'True) (S1 ('MetaSel ('Just "getMul") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))

Methods

from1 :: Mul a -> Rep1 Mul a #

to1 :: Rep1 Mul a -> Mul a #

Storable a => Storable (Mul a) # 
Instance details

Defined in Data.Semiring

Methods

sizeOf :: Mul a -> Int #

alignment :: Mul a -> Int #

peekElemOff :: Ptr (Mul a) -> Int -> IO (Mul a) #

pokeElemOff :: Ptr (Mul a) -> Int -> Mul a -> IO () #

peekByteOff :: Ptr b -> Int -> IO (Mul a) #

pokeByteOff :: Ptr b -> Int -> Mul a -> IO () #

peek :: Ptr (Mul a) -> IO (Mul a) #

poke :: Ptr (Mul a) -> Mul a -> IO () #

Semiring a => Monoid (Mul a) # 
Instance details

Defined in Data.Semiring

Methods

mempty :: Mul a #

mappend :: Mul a -> Mul a -> Mul a #

mconcat :: [Mul a] -> Mul a #

Semiring a => Semigroup (Mul a) # 
Instance details

Defined in Data.Semiring

Methods

(<>) :: Mul a -> Mul a -> Mul a #

sconcat :: NonEmpty (Mul a) -> Mul a #

stimes :: Integral b => b -> Mul a -> Mul a #

Bounded a => Bounded (Mul a) # 
Instance details

Defined in Data.Semiring

Methods

minBound :: Mul a #

maxBound :: Mul a #

Enum a => Enum (Mul a) # 
Instance details

Defined in Data.Semiring

Methods

succ :: 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] #

Generic (Mul a) # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep (Mul a) 
Instance details

Defined in Data.Semiring

type Rep (Mul a) = D1 ('MetaData "Mul" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "Mul" 'PrefixI 'True) (S1 ('MetaSel ('Just "getMul") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

Methods

from :: Mul a -> Rep (Mul a) x #

to :: Rep (Mul a) x -> Mul a #

Num a => Num (Mul a) # 
Instance details

Defined in Data.Semiring

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 #

fromInteger :: Integer -> Mul a #

Read a => Read (Mul a) # 
Instance details

Defined in Data.Semiring

Fractional a => Fractional (Mul a) # 
Instance details

Defined in Data.Semiring

Methods

(/) :: Mul a -> Mul a -> Mul a #

recip :: Mul a -> Mul a #

fromRational :: Rational -> Mul a #

Real a => Real (Mul a) # 
Instance details

Defined in Data.Semiring

Methods

toRational :: Mul a -> Rational #

RealFrac a => RealFrac (Mul a) # 
Instance details

Defined in Data.Semiring

Methods

properFraction :: Integral b => Mul a -> (b, Mul a) #

truncate :: Integral b => Mul a -> b #

round :: Integral b => Mul a -> b #

ceiling :: Integral b => Mul a -> b #

floor :: Integral b => Mul a -> b #

Show a => Show (Mul a) # 
Instance details

Defined in Data.Semiring

Methods

showsPrec :: Int -> Mul a -> ShowS #

show :: Mul a -> String #

showList :: [Mul a] -> ShowS #

Eq a => Eq (Mul a) # 
Instance details

Defined in Data.Semiring

Methods

(==) :: Mul a -> Mul a -> Bool #

(/=) :: Mul a -> Mul a -> Bool #

Ord a => Ord (Mul a) # 
Instance details

Defined in Data.Semiring

Methods

compare :: 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 #

type Rep1 Mul # 
Instance details

Defined in Data.Semiring

type Rep1 Mul = D1 ('MetaData "Mul" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "Mul" 'PrefixI 'True) (S1 ('MetaSel ('Just "getMul") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))
type Rep (Mul a) # 
Instance details

Defined in Data.Semiring

type Rep (Mul a) = D1 ('MetaData "Mul" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "Mul" 'PrefixI 'True) (S1 ('MetaSel ('Just "getMul") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

newtype WrappedNum a #

Provide Semiring and Ring for an arbitrary Num. It is useful with GHC 8.6+'s DerivingVia extension.

Constructors

WrapNum 

Fields

Instances

Instances details
Foldable WrappedNum # 
Instance details

Defined in Data.Semiring

Methods

fold :: Monoid m => WrappedNum m -> m #

foldMap :: Monoid m => (a -> m) -> WrappedNum a -> m #

foldMap' :: Monoid m => (a -> m) -> WrappedNum a -> m #

foldr :: (a -> b -> b) -> b -> WrappedNum a -> b #

foldr' :: (a -> b -> b) -> b -> WrappedNum a -> b #

foldl :: (b -> a -> b) -> b -> WrappedNum a -> b #

foldl' :: (b -> a -> b) -> b -> WrappedNum a -> b #

foldr1 :: (a -> a -> a) -> WrappedNum a -> a #

foldl1 :: (a -> a -> a) -> WrappedNum a -> a #

toList :: WrappedNum a -> [a] #

null :: WrappedNum a -> Bool #

length :: WrappedNum a -> Int #

elem :: Eq a => a -> WrappedNum a -> Bool #

maximum :: Ord a => WrappedNum a -> a #

minimum :: Ord a => WrappedNum a -> a #

sum :: Num a => WrappedNum a -> a #

product :: Num a => WrappedNum a -> a #

Traversable WrappedNum # 
Instance details

Defined in Data.Semiring

Methods

traverse :: Applicative f => (a -> f b) -> WrappedNum a -> f (WrappedNum b) #

sequenceA :: Applicative f => WrappedNum (f a) -> f (WrappedNum a) #

mapM :: Monad m => (a -> m b) -> WrappedNum a -> m (WrappedNum b) #

sequence :: Monad m => WrappedNum (m a) -> m (WrappedNum a) #

Functor WrappedNum # 
Instance details

Defined in Data.Semiring

Methods

fmap :: (a -> b) -> WrappedNum a -> WrappedNum b #

(<$) :: a -> WrappedNum b -> WrappedNum a #

Generic1 WrappedNum # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep1 WrappedNum 
Instance details

Defined in Data.Semiring

type Rep1 WrappedNum = D1 ('MetaData "WrappedNum" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "WrapNum" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapNum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))
Storable a => Storable (WrappedNum a) # 
Instance details

Defined in Data.Semiring

Methods

sizeOf :: WrappedNum a -> Int #

alignment :: WrappedNum a -> Int #

peekElemOff :: Ptr (WrappedNum a) -> Int -> IO (WrappedNum a) #

pokeElemOff :: Ptr (WrappedNum a) -> Int -> WrappedNum a -> IO () #

peekByteOff :: Ptr b -> Int -> IO (WrappedNum a) #

pokeByteOff :: Ptr b -> Int -> WrappedNum a -> IO () #

peek :: Ptr (WrappedNum a) -> IO (WrappedNum a) #

poke :: Ptr (WrappedNum a) -> WrappedNum a -> IO () #

Bits a => Bits (WrappedNum a) # 
Instance details

Defined in Data.Semiring

Bounded a => Bounded (WrappedNum a) # 
Instance details

Defined in Data.Semiring

Enum a => Enum (WrappedNum a) # 
Instance details

Defined in Data.Semiring

Generic (WrappedNum a) # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep (WrappedNum a) 
Instance details

Defined in Data.Semiring

type Rep (WrappedNum a) = D1 ('MetaData "WrappedNum" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "WrapNum" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapNum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

Methods

from :: WrappedNum a -> Rep (WrappedNum a) x #

to :: Rep (WrappedNum a) x -> WrappedNum a #

Num a => Num (WrappedNum a) # 
Instance details

Defined in Data.Semiring

Read a => Read (WrappedNum a) # 
Instance details

Defined in Data.Semiring

Fractional a => Fractional (WrappedNum a) # 
Instance details

Defined in Data.Semiring

Real a => Real (WrappedNum a) # 
Instance details

Defined in Data.Semiring

RealFrac a => RealFrac (WrappedNum a) # 
Instance details

Defined in Data.Semiring

Methods

properFraction :: Integral b => WrappedNum a -> (b, WrappedNum a) #

truncate :: Integral b => WrappedNum a -> b #

round :: Integral b => WrappedNum a -> b #

ceiling :: Integral b => WrappedNum a -> b #

floor :: Integral b => WrappedNum a -> b #

Show a => Show (WrappedNum a) # 
Instance details

Defined in Data.Semiring

Eq a => Eq (WrappedNum a) # 
Instance details

Defined in Data.Semiring

Methods

(==) :: WrappedNum a -> WrappedNum a -> Bool #

(/=) :: WrappedNum a -> WrappedNum a -> Bool #

Ord a => Ord (WrappedNum a) # 
Instance details

Defined in Data.Semiring

Num a => Ring (WrappedNum a) # 
Instance details

Defined in Data.Semiring

Methods

negate :: WrappedNum a -> WrappedNum a #

Num a => Semiring (WrappedNum a) # 
Instance details

Defined in Data.Semiring

type Rep1 WrappedNum # 
Instance details

Defined in Data.Semiring

type Rep1 WrappedNum = D1 ('MetaData "WrappedNum" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "WrapNum" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapNum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))
type Rep (WrappedNum a) # 
Instance details

Defined in Data.Semiring

type Rep (WrappedNum a) = D1 ('MetaData "WrappedNum" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "WrapNum" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapNum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

newtype Mod2 #

Mod2 represents the integers mod 2.

It is useful in the computing of Zhegalkin polynomials.

Constructors

Mod2 

Fields

Instances

Instances details
Bounded Mod2 # 
Instance details

Defined in Data.Semiring

Enum Mod2 # 
Instance details

Defined in Data.Semiring

Methods

succ :: Mod2 -> Mod2 #

pred :: Mod2 -> Mod2 #

toEnum :: Int -> Mod2 #

fromEnum :: Mod2 -> Int #

enumFrom :: Mod2 -> [Mod2] #

enumFromThen :: Mod2 -> Mod2 -> [Mod2] #

enumFromTo :: Mod2 -> Mod2 -> [Mod2] #

enumFromThenTo :: Mod2 -> Mod2 -> Mod2 -> [Mod2] #

Generic Mod2 # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep Mod2 
Instance details

Defined in Data.Semiring

type Rep Mod2 = D1 ('MetaData "Mod2" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "Mod2" 'PrefixI 'True) (S1 ('MetaSel ('Just "getMod2") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))

Methods

from :: Mod2 -> Rep Mod2 x #

to :: Rep Mod2 x -> Mod2 #

Read Mod2 # 
Instance details

Defined in Data.Semiring

Show Mod2 # 
Instance details

Defined in Data.Semiring

Methods

showsPrec :: Int -> Mod2 -> ShowS #

show :: Mod2 -> String #

showList :: [Mod2] -> ShowS #

Eq Mod2 # 
Instance details

Defined in Data.Semiring

Methods

(==) :: Mod2 -> Mod2 -> Bool #

(/=) :: Mod2 -> Mod2 -> Bool #

Ord Mod2 # 
Instance details

Defined in Data.Semiring

Methods

compare :: Mod2 -> Mod2 -> Ordering #

(<) :: Mod2 -> Mod2 -> Bool #

(<=) :: Mod2 -> Mod2 -> Bool #

(>) :: Mod2 -> Mod2 -> Bool #

(>=) :: Mod2 -> Mod2 -> Bool #

max :: Mod2 -> Mod2 -> Mod2 #

min :: Mod2 -> Mod2 -> Mod2 #

Euclidean Mod2 # 
Instance details

Defined in Data.Euclidean

Methods

quotRem :: Mod2 -> Mod2 -> (Mod2, Mod2) #

quot :: Mod2 -> Mod2 -> Mod2 #

rem :: Mod2 -> Mod2 -> Mod2 #

degree :: Mod2 -> Natural #

Field Mod2 # 
Instance details

Defined in Data.Euclidean

GcdDomain Mod2 # 
Instance details

Defined in Data.Euclidean

Methods

divide :: Mod2 -> Mod2 -> Maybe Mod2 #

gcd :: Mod2 -> Mod2 -> Mod2 #

lcm :: Mod2 -> Mod2 -> Mod2 #

coprime :: Mod2 -> Mod2 -> Bool #

Ring Mod2 # 
Instance details

Defined in Data.Semiring

Methods

negate :: Mod2 -> Mod2 #

Semiring Mod2 # 
Instance details

Defined in Data.Semiring

Methods

plus :: Mod2 -> Mod2 -> Mod2 #

zero :: Mod2 #

times :: Mod2 -> Mod2 -> Mod2 #

one :: Mod2 #

fromNatural :: Natural -> Mod2 #

Star Mod2 # 
Instance details

Defined in Data.Star

Methods

star :: Mod2 -> Mod2 #

aplus :: Mod2 -> Mod2 #

type Rep Mod2 # 
Instance details

Defined in Data.Semiring

type Rep Mod2 = D1 ('MetaData "Mod2" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "Mod2" 'PrefixI 'True) (S1 ('MetaSel ('Just "getMod2") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))

newtype IntSetOf a #

Wrapper to mimic Set (Sum Int), Set (Product Int), etc., while having a more efficient underlying representation.

Constructors

IntSetOf 

Fields

Instances

Instances details
Generic1 IntSetOf # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep1 IntSetOf 
Instance details

Defined in Data.Semiring

type Rep1 IntSetOf = D1 ('MetaData "IntSetOf" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "IntSetOf" 'PrefixI 'True) (S1 ('MetaSel ('Just "getIntSet") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IntSet)))

Methods

from1 :: IntSetOf a -> Rep1 IntSetOf a #

to1 :: Rep1 IntSetOf a -> IntSetOf a #

Monoid (IntSetOf a) # 
Instance details

Defined in Data.Semiring

Methods

mempty :: IntSetOf a #

mappend :: IntSetOf a -> IntSetOf a -> IntSetOf a #

mconcat :: [IntSetOf a] -> IntSetOf a #

Semigroup (IntSetOf a) # 
Instance details

Defined in Data.Semiring

Methods

(<>) :: IntSetOf a -> IntSetOf a -> IntSetOf a #

sconcat :: NonEmpty (IntSetOf a) -> IntSetOf a #

stimes :: Integral b => b -> IntSetOf a -> IntSetOf a #

Generic (IntSetOf a) # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep (IntSetOf a) 
Instance details

Defined in Data.Semiring

type Rep (IntSetOf a) = D1 ('MetaData "IntSetOf" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "IntSetOf" 'PrefixI 'True) (S1 ('MetaSel ('Just "getIntSet") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IntSet)))

Methods

from :: IntSetOf a -> Rep (IntSetOf a) x #

to :: Rep (IntSetOf a) x -> IntSetOf a #

Read (IntSetOf a) # 
Instance details

Defined in Data.Semiring

Show (IntSetOf a) # 
Instance details

Defined in Data.Semiring

Methods

showsPrec :: Int -> IntSetOf a -> ShowS #

show :: IntSetOf a -> String #

showList :: [IntSetOf a] -> ShowS #

Eq (IntSetOf a) # 
Instance details

Defined in Data.Semiring

Methods

(==) :: IntSetOf a -> IntSetOf a -> Bool #

(/=) :: IntSetOf a -> IntSetOf a -> Bool #

Ord (IntSetOf a) # 
Instance details

Defined in Data.Semiring

Methods

compare :: IntSetOf a -> IntSetOf a -> Ordering #

(<) :: IntSetOf a -> IntSetOf a -> Bool #

(<=) :: IntSetOf a -> IntSetOf a -> Bool #

(>) :: IntSetOf a -> IntSetOf a -> Bool #

(>=) :: IntSetOf a -> IntSetOf a -> Bool #

max :: IntSetOf a -> IntSetOf a -> IntSetOf a #

min :: IntSetOf a -> IntSetOf a -> IntSetOf a #

(Coercible Int a, Monoid a) => Semiring (IntSetOf a) # 
Instance details

Defined in Data.Semiring

type Rep1 IntSetOf # 
Instance details

Defined in Data.Semiring

type Rep1 IntSetOf = D1 ('MetaData "IntSetOf" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "IntSetOf" 'PrefixI 'True) (S1 ('MetaSel ('Just "getIntSet") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IntSet)))
type Rep (IntSetOf a) # 
Instance details

Defined in Data.Semiring

type Rep (IntSetOf a) = D1 ('MetaData "IntSetOf" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "IntSetOf" 'PrefixI 'True) (S1 ('MetaSel ('Just "getIntSet") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IntSet)))

newtype IntMapOf k v #

Wrapper to mimic Map (Sum Int) v, Map (Product Int) v, etc., while having a more efficient underlying representation.

Constructors

IntMapOf 

Fields

Instances

Instances details
Generic1 (IntMapOf k :: Type -> Type) # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep1 (IntMapOf k :: Type -> Type) 
Instance details

Defined in Data.Semiring

type Rep1 (IntMapOf k :: Type -> Type) = D1 ('MetaData "IntMapOf" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "IntMapOf" 'PrefixI 'True) (S1 ('MetaSel ('Just "getIntMap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 IntMap)))

Methods

from1 :: IntMapOf k a -> Rep1 (IntMapOf k) a #

to1 :: Rep1 (IntMapOf k) a -> IntMapOf k a #

Monoid (IntMapOf k v) # 
Instance details

Defined in Data.Semiring

Methods

mempty :: IntMapOf k v #

mappend :: IntMapOf k v -> IntMapOf k v -> IntMapOf k v #

mconcat :: [IntMapOf k v] -> IntMapOf k v #

Semigroup (IntMapOf k v) # 
Instance details

Defined in Data.Semiring

Methods

(<>) :: IntMapOf k v -> IntMapOf k v -> IntMapOf k v #

sconcat :: NonEmpty (IntMapOf k v) -> IntMapOf k v #

stimes :: Integral b => b -> IntMapOf k v -> IntMapOf k v #

Generic (IntMapOf k v) # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep (IntMapOf k v) 
Instance details

Defined in Data.Semiring

type Rep (IntMapOf k v) = D1 ('MetaData "IntMapOf" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "IntMapOf" 'PrefixI 'True) (S1 ('MetaSel ('Just "getIntMap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IntMap v))))

Methods

from :: IntMapOf k v -> Rep (IntMapOf k v) x #

to :: Rep (IntMapOf k v) x -> IntMapOf k v #

Read v => Read (IntMapOf k v) # 
Instance details

Defined in Data.Semiring

Show v => Show (IntMapOf k v) # 
Instance details

Defined in Data.Semiring

Methods

showsPrec :: Int -> IntMapOf k v -> ShowS #

show :: IntMapOf k v -> String #

showList :: [IntMapOf k v] -> ShowS #

Eq v => Eq (IntMapOf k v) # 
Instance details

Defined in Data.Semiring

Methods

(==) :: IntMapOf k v -> IntMapOf k v -> Bool #

(/=) :: IntMapOf k v -> IntMapOf k v -> Bool #

Ord v => Ord (IntMapOf k v) # 
Instance details

Defined in Data.Semiring

Methods

compare :: IntMapOf k v -> IntMapOf k v -> Ordering #

(<) :: IntMapOf k v -> IntMapOf k v -> Bool #

(<=) :: IntMapOf k v -> IntMapOf k v -> Bool #

(>) :: IntMapOf k v -> IntMapOf k v -> Bool #

(>=) :: IntMapOf k v -> IntMapOf k v -> Bool #

max :: IntMapOf k v -> IntMapOf k v -> IntMapOf k v #

min :: IntMapOf k v -> IntMapOf k v -> IntMapOf k v #

(Coercible Int k, Monoid k, Semiring v) => Semiring (IntMapOf k v) # 
Instance details

Defined in Data.Semiring

Methods

plus :: IntMapOf k v -> IntMapOf k v -> IntMapOf k v #

zero :: IntMapOf k v #

times :: IntMapOf k v -> IntMapOf k v -> IntMapOf k v #

one :: IntMapOf k v #

fromNatural :: Natural -> IntMapOf k v #

type Rep1 (IntMapOf k :: Type -> Type) # 
Instance details

Defined in Data.Semiring

type Rep1 (IntMapOf k :: Type -> Type) = D1 ('MetaData "IntMapOf" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "IntMapOf" 'PrefixI 'True) (S1 ('MetaSel ('Just "getIntMap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 IntMap)))
type Rep (IntMapOf k v) # 
Instance details

Defined in Data.Semiring

type Rep (IntMapOf k v) = D1 ('MetaData "IntMapOf" "Data.Semiring" "semirings-0.6-7jbkL2sTUIYBJKyP3je9t7" 'True) (C1 ('MetaCons "IntMapOf" 'PrefixI 'True) (S1 ('MetaSel ('Just "getIntMap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IntMap v))))

Ring typeclass

class Semiring a => Ring a where #

The class of semirings with an additive inverse.

negate a + a = zero

Methods

negate :: a -> a #

Instances

Instances details
Ring CChar # 
Instance details

Defined in Data.Semiring

Methods

negate :: CChar -> CChar #

Ring CClock # 
Instance details

Defined in Data.Semiring

Methods

negate :: CClock -> CClock #

Ring CDouble # 
Instance details

Defined in Data.Semiring

Methods

negate :: CDouble -> CDouble #

Ring CFloat # 
Instance details

Defined in Data.Semiring

Methods

negate :: CFloat -> CFloat #

Ring CInt # 
Instance details

Defined in Data.Semiring

Methods

negate :: CInt -> CInt #

Ring CIntMax # 
Instance details

Defined in Data.Semiring

Methods

negate :: CIntMax -> CIntMax #

Ring CIntPtr # 
Instance details

Defined in Data.Semiring

Methods

negate :: CIntPtr -> CIntPtr #

Ring CLLong # 
Instance details

Defined in Data.Semiring

Methods

negate :: CLLong -> CLLong #

Ring CLong # 
Instance details

Defined in Data.Semiring

Methods

negate :: CLong -> CLong #

Ring CPtrdiff # 
Instance details

Defined in Data.Semiring

Methods

negate :: CPtrdiff -> CPtrdiff #

Ring CSChar # 
Instance details

Defined in Data.Semiring

Methods

negate :: CSChar -> CSChar #

Ring CSUSeconds # 
Instance details

Defined in Data.Semiring

Ring CShort # 
Instance details

Defined in Data.Semiring

Methods

negate :: CShort -> CShort #

Ring CSigAtomic # 
Instance details

Defined in Data.Semiring

Ring CSize # 
Instance details

Defined in Data.Semiring

Methods

negate :: CSize -> CSize #

Ring CTime # 
Instance details

Defined in Data.Semiring

Methods

negate :: CTime -> CTime #

Ring CUChar # 
Instance details

Defined in Data.Semiring

Methods

negate :: CUChar -> CUChar #

Ring CUInt # 
Instance details

Defined in Data.Semiring

Methods

negate :: CUInt -> CUInt #

Ring CUIntMax # 
Instance details

Defined in Data.Semiring

Methods

negate :: CUIntMax -> CUIntMax #

Ring CUIntPtr # 
Instance details

Defined in Data.Semiring

Methods

negate :: CUIntPtr -> CUIntPtr #

Ring CULLong # 
Instance details

Defined in Data.Semiring

Methods

negate :: CULLong -> CULLong #

Ring CULong # 
Instance details

Defined in Data.Semiring

Methods

negate :: CULong -> CULong #

Ring CUSeconds # 
Instance details

Defined in Data.Semiring

Ring CUShort # 
Instance details

Defined in Data.Semiring

Methods

negate :: CUShort -> CUShort #

Ring CWchar # 
Instance details

Defined in Data.Semiring

Methods

negate :: CWchar -> CWchar #

Ring IntPtr # 
Instance details

Defined in Data.Semiring

Methods

negate :: IntPtr -> IntPtr #

Ring WordPtr # 
Instance details

Defined in Data.Semiring

Methods

negate :: WordPtr -> WordPtr #

Ring Int16 # 
Instance details

Defined in Data.Semiring

Methods

negate :: Int16 -> Int16 #

Ring Int32 # 
Instance details

Defined in Data.Semiring

Methods

negate :: Int32 -> Int32 #

Ring Int64 # 
Instance details

Defined in Data.Semiring

Methods

negate :: Int64 -> Int64 #

Ring Int8 # 
Instance details

Defined in Data.Semiring

Methods

negate :: Int8 -> Int8 #

Ring Word16 # 
Instance details

Defined in Data.Semiring

Methods

negate :: Word16 -> Word16 #

Ring Word32 # 
Instance details

Defined in Data.Semiring

Methods

negate :: Word32 -> Word32 #

Ring Word64 # 
Instance details

Defined in Data.Semiring

Methods

negate :: Word64 -> Word64 #

Ring Word8 # 
Instance details

Defined in Data.Semiring

Methods

negate :: Word8 -> Word8 #

Ring CCc # 
Instance details

Defined in Data.Semiring

Methods

negate :: CCc -> CCc #

Ring CDev # 
Instance details

Defined in Data.Semiring

Methods

negate :: CDev -> CDev #

Ring CGid # 
Instance details

Defined in Data.Semiring

Methods

negate :: CGid -> CGid #

Ring CIno # 
Instance details

Defined in Data.Semiring

Methods

negate :: CIno -> CIno #

Ring CMode # 
Instance details

Defined in Data.Semiring

Methods

negate :: CMode -> CMode #

Ring CNlink # 
Instance details

Defined in Data.Semiring

Methods

negate :: CNlink -> CNlink #

Ring COff # 
Instance details

Defined in Data.Semiring

Methods

negate :: COff -> COff #

Ring CPid # 
Instance details

Defined in Data.Semiring

Methods

negate :: CPid -> CPid #

Ring CRLim # 
Instance details

Defined in Data.Semiring

Methods

negate :: CRLim -> CRLim #

Ring CSpeed # 
Instance details

Defined in Data.Semiring

Methods

negate :: CSpeed -> CSpeed #

Ring CSsize # 
Instance details

Defined in Data.Semiring

Methods

negate :: CSsize -> CSsize #

Ring CTcflag # 
Instance details

Defined in Data.Semiring

Methods

negate :: CTcflag -> CTcflag #

Ring CUid # 
Instance details

Defined in Data.Semiring

Methods

negate :: CUid -> CUid #

Ring Fd # 
Instance details

Defined in Data.Semiring

Methods

negate :: Fd -> Fd #

Ring Mod2 # 
Instance details

Defined in Data.Semiring

Methods

negate :: Mod2 -> Mod2 #

Ring Integer # 
Instance details

Defined in Data.Semiring

Methods

negate :: Integer -> Integer #

Ring () # 
Instance details

Defined in Data.Semiring

Methods

negate :: () -> () #

Ring Double # 
Instance details

Defined in Data.Semiring

Methods

negate :: Double -> Double #

Ring Float # 
Instance details

Defined in Data.Semiring

Methods

negate :: Float -> Float #

Ring Int # 
Instance details

Defined in Data.Semiring

Methods

negate :: Int -> Int #

Ring Word # 
Instance details

Defined in Data.Semiring

Methods

negate :: Word -> Word #

Ring a => Ring (Complex a) # 
Instance details

Defined in Data.Semiring

Methods

negate :: Complex a -> Complex a #

Ring a => Ring (Identity a) # 
Instance details

Defined in Data.Semiring

Methods

negate :: Identity a -> Identity a #

Ring a => Ring (Down a) # 
Instance details

Defined in Data.Semiring

Methods

negate :: Down a -> Down a #

Ring a => Ring (Dual a) # 
Instance details

Defined in Data.Semiring

Methods

negate :: Dual a -> Dual a #

Integral a => Ring (Ratio a) # 
Instance details

Defined in Data.Semiring

Methods

negate :: Ratio a -> Ratio a #

Ring a => Ring (IO a) # 
Instance details

Defined in Data.Semiring

Methods

negate :: IO a -> IO a #

Num a => Ring (WrappedFractional a) # 
Instance details

Defined in Data.Euclidean

Num a => Ring (WrappedIntegral a) # 
Instance details

Defined in Data.Euclidean

Num a => Ring (WrappedNum a) # 
Instance details

Defined in Data.Semiring

Methods

negate :: WrappedNum a -> WrappedNum a #

HasResolution a => Ring (Fixed a) # 
Instance details

Defined in Data.Semiring

Methods

negate :: Fixed a -> Fixed a #

Ring a => Ring (Op a b) # 
Instance details

Defined in Data.Semiring

Methods

negate :: Op a b -> Op a b #

(Ring a, Ring b) => Ring (a, b) # 
Instance details

Defined in Data.Semiring.Generic

Methods

negate :: (a, b) -> (a, b) #

Ring b => Ring (a -> b) # 
Instance details

Defined in Data.Semiring

Methods

negate :: (a -> b) -> a -> b #

Ring a => Ring (Const a b) # 
Instance details

Defined in Data.Semiring

Methods

negate :: Const a b -> Const a b #

(Ring a, Applicative f) => Ring (Ap f a) # 
Instance details

Defined in Data.Semiring

Methods

negate :: Ap f a -> Ap f a #

(Ring a, Ring b, Ring c) => Ring (a, b, c) # 
Instance details

Defined in Data.Semiring.Generic

Methods

negate :: (a, b, c) -> (a, b, c) #

(Ring a, Ring b, Ring c, Ring d) => Ring (a, b, c, d) # 
Instance details

Defined in Data.Semiring.Generic

Methods

negate :: (a, b, c, d) -> (a, b, c, d) #

(Ring a, Ring b, Ring c, Ring d, Ring e) => Ring (a, b, c, d, e) # 
Instance details

Defined in Data.Semiring.Generic

Methods

negate :: (a, b, c, d, e) -> (a, b, c, d, e) #

(Ring a, Ring b, Ring c, Ring d, Ring e, Ring f) => Ring (a, b, c, d, e, f) # 
Instance details

Defined in Data.Semiring.Generic

Methods

negate :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) #

(Ring a, Ring b, Ring c, Ring d, Ring e, Ring f, Ring g) => Ring (a, b, c, d, e, f, g) # 
Instance details

Defined in Data.Semiring.Generic

Methods

negate :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) #

fromInteger :: Ring a => Integer -> a #

Convert from integer to ring.

When {-# LANGUAGE RebindableSyntax #-} is enabled, this function is used for desugaring integer literals. This may be used to facilitate transition from Num to Ring: no need to replace 0 and 1 with one and zero or to cast numeric literals.

fromIntegral :: (Integral a, Ring b) => a -> b #

Convert from integral to ring.

minus :: Ring a => a -> a -> a infixl 6 #

Subtract two Ring values. For any type R with a Num instance, this is the same as (-).

x minus y = x + negate y

(-) :: Ring a => a -> a -> a infixl 6 #

Infix shorthand for minus.