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

Safe HaskellNone
LanguageHaskell98

Data.Semiring

Contents

Description

A class for semirings (types with two binary operations, one commutative and one associative, and two respective identites), 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: A commutative monoid and an associative monoid. For any type R with a Num instance, the commutative monoid is (R, '(Prelude.+)', 0) and the associative monoid is (R, '(Prelude.*)', 1).

Instances should satisfy the following laws:

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

x * (y + z) = (x * y) + (x * z) (x + y) * z = (x * z) + (y * z)

annihilation
zero * x = x * zero = zero

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

Instances
Semiring Bool # 
Instance details

Defined in Data.Semiring

Methods

plus :: Bool -> Bool -> Bool #

zero :: Bool #

times :: Bool -> Bool -> Bool #

one :: Bool #

Semiring Double # 
Instance details

Defined in Data.Semiring

Semiring Float # 
Instance details

Defined in Data.Semiring

Methods

plus :: Float -> Float -> Float #

zero :: Float #

times :: Float -> Float -> Float #

one :: Float #

Semiring Int # 
Instance details

Defined in Data.Semiring

Methods

plus :: Int -> Int -> Int #

zero :: Int #

times :: Int -> Int -> Int #

one :: Int #

Semiring Int8 # 
Instance details

Defined in Data.Semiring

Methods

plus :: Int8 -> Int8 -> Int8 #

zero :: Int8 #

times :: Int8 -> Int8 -> Int8 #

one :: Int8 #

Semiring Int16 # 
Instance details

Defined in Data.Semiring

Methods

plus :: Int16 -> Int16 -> Int16 #

zero :: Int16 #

times :: Int16 -> Int16 -> Int16 #

one :: Int16 #

Semiring Int32 # 
Instance details

Defined in Data.Semiring

Methods

plus :: Int32 -> Int32 -> Int32 #

zero :: Int32 #

times :: Int32 -> Int32 -> Int32 #

one :: Int32 #

Semiring Int64 # 
Instance details

Defined in Data.Semiring

Methods

plus :: Int64 -> Int64 -> Int64 #

zero :: Int64 #

times :: Int64 -> Int64 -> Int64 #

one :: Int64 #

Semiring Integer # 
Instance details

Defined in Data.Semiring

Semiring Natural # 
Instance details

Defined in Data.Semiring

Semiring Word # 
Instance details

Defined in Data.Semiring

Methods

plus :: Word -> Word -> Word #

zero :: Word #

times :: Word -> Word -> Word #

one :: Word #

Semiring Word8 # 
Instance details

Defined in Data.Semiring

Methods

plus :: Word8 -> Word8 -> Word8 #

zero :: Word8 #

times :: Word8 -> Word8 -> Word8 #

one :: Word8 #

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 () # 
Instance details

Defined in Data.Semiring

Methods

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

zero :: () #

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

one :: () #

Semiring CDev # 
Instance details

Defined in Data.Semiring

Methods

plus :: CDev -> CDev -> CDev #

zero :: CDev #

times :: CDev -> CDev -> CDev #

one :: CDev #

Semiring CIno # 
Instance details

Defined in Data.Semiring

Methods

plus :: CIno -> CIno -> CIno #

zero :: CIno #

times :: CIno -> CIno -> CIno #

one :: CIno #

Semiring CMode # 
Instance details

Defined in Data.Semiring

Methods

plus :: CMode -> CMode -> CMode #

zero :: CMode #

times :: CMode -> CMode -> CMode #

one :: CMode #

Semiring COff # 
Instance details

Defined in Data.Semiring

Methods

plus :: COff -> COff -> COff #

zero :: COff #

times :: COff -> COff -> COff #

one :: COff #

Semiring CPid # 
Instance details

Defined in Data.Semiring

Methods

plus :: CPid -> CPid -> CPid #

zero :: CPid #

times :: CPid -> CPid -> CPid #

one :: CPid #

Semiring CSsize # 
Instance details

Defined in Data.Semiring

Semiring CGid # 
Instance details

Defined in Data.Semiring

Methods

plus :: CGid -> CGid -> CGid #

zero :: CGid #

times :: CGid -> CGid -> CGid #

one :: CGid #

Semiring CNlink # 
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 #

Semiring CCc # 
Instance details

Defined in Data.Semiring

Methods

plus :: CCc -> CCc -> CCc #

zero :: CCc #

times :: CCc -> CCc -> CCc #

one :: CCc #

Semiring CSpeed # 
Instance details

Defined in Data.Semiring

Semiring CTcflag # 
Instance details

Defined in Data.Semiring

Semiring CRLim # 
Instance details

Defined in Data.Semiring

Methods

plus :: CRLim -> CRLim -> CRLim #

zero :: CRLim #

times :: CRLim -> CRLim -> CRLim #

one :: CRLim #

Semiring Fd # 
Instance details

Defined in Data.Semiring

Methods

plus :: Fd -> Fd -> Fd #

zero :: Fd #

times :: Fd -> Fd -> Fd #

one :: Fd #

Semiring CChar # 
Instance details

Defined in Data.Semiring

Methods

plus :: CChar -> CChar -> CChar #

zero :: CChar #

times :: CChar -> CChar -> CChar #

one :: CChar #

Semiring CSChar # 
Instance details

Defined in Data.Semiring

Semiring CUChar # 
Instance details

Defined in Data.Semiring

Semiring CShort # 
Instance details

Defined in Data.Semiring

Semiring CUShort # 
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 #

Semiring CUInt # 
Instance details

Defined in Data.Semiring

Methods

plus :: CUInt -> CUInt -> CUInt #

zero :: CUInt #

times :: CUInt -> CUInt -> CUInt #

one :: CUInt #

Semiring CLong # 
Instance details

Defined in Data.Semiring

Methods

plus :: CLong -> CLong -> CLong #

zero :: CLong #

times :: CLong -> CLong -> CLong #

one :: CLong #

Semiring CULong # 
Instance details

Defined in Data.Semiring

Semiring CLLong # 
Instance details

Defined in Data.Semiring

Semiring CULLong # 
Instance details

Defined in Data.Semiring

Semiring CFloat # 
Instance details

Defined in Data.Semiring

Semiring CDouble # 
Instance details

Defined in Data.Semiring

Semiring CPtrdiff # 
Instance details

Defined in Data.Semiring

Semiring CSize # 
Instance details

Defined in Data.Semiring

Methods

plus :: CSize -> CSize -> CSize #

zero :: CSize #

times :: CSize -> CSize -> CSize #

one :: CSize #

Semiring CWchar # 
Instance details

Defined in Data.Semiring

Semiring CSigAtomic # 
Instance details

Defined in Data.Semiring

Semiring CClock # 
Instance details

Defined in Data.Semiring

Semiring CTime # 
Instance details

Defined in Data.Semiring

Methods

plus :: CTime -> CTime -> CTime #

zero :: CTime #

times :: CTime -> CTime -> CTime #

one :: CTime #

Semiring CUSeconds # 
Instance details

Defined in Data.Semiring

Semiring CSUSeconds # 
Instance details

Defined in Data.Semiring

Semiring CIntPtr # 
Instance details

Defined in Data.Semiring

Semiring CUIntPtr # 
Instance details

Defined in Data.Semiring

Semiring CIntMax # 
Instance details

Defined in Data.Semiring

Semiring CUIntMax # 
Instance details

Defined in Data.Semiring

Semiring WordPtr # 
Instance details

Defined in Data.Semiring

Semiring IntPtr # 
Instance details

Defined in Data.Semiring

Semiring a => Semiring [a] # 
Instance details

Defined in Data.Semiring

Methods

plus :: [a] -> [a] -> [a] #

zero :: [a] #

times :: [a] -> [a] -> [a] #

one :: [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 #

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 #

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 #

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 #

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 #

Semiring (Predicate a) # 
Instance details

Defined in Data.Semiring

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

Defined in Data.Semiring

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

Defined in Data.Semiring

Methods

plus :: Min a -> Min a -> Min a #

zero :: Min a #

times :: Min a -> Min a -> Min a #

one :: Min a #

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

Defined in Data.Semiring

Methods

plus :: Max a -> Max a -> Max a #

zero :: Max a #

times :: Max a -> Max a -> Max a #

one :: Max a #

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

Defined in Data.Semiring

Methods

plus :: Identity a -> Identity a -> Identity a #

zero :: Identity a #

times :: Identity a -> Identity a -> Identity a #

one :: Identity 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 #

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

Defined in Data.Semiring

Methods

plus :: Sum a -> Sum a -> Sum a #

zero :: Sum a #

times :: Sum a -> Sum a -> Sum a #

one :: Sum a #

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

Defined in Data.Semiring

Methods

plus :: Product a -> Product a -> Product a #

zero :: Product a #

times :: Product a -> Product a -> Product a #

one :: Product a #

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 #

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

The multiplication laws are satisfied for any underlying Monoid, so we require a Monoid contraint 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 #

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

The multiplication laws are satisfied for any underlying Monoid, so we require a Monoid contraint 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 #

(Unbox a, Semiring a) => Semiring (Vector a) # 
Instance details

Defined in Data.Semiring

Methods

plus :: Vector a -> Vector a -> Vector a #

zero :: Vector a #

times :: Vector a -> Vector a -> Vector a #

one :: Vector a #

(Storable a, Semiring a) => Semiring (Vector a) # 
Instance details

Defined in Data.Semiring

Methods

plus :: Vector a -> Vector a -> Vector a #

zero :: Vector a #

times :: Vector a -> Vector a -> Vector a #

one :: Vector a #

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

Defined in Data.Semiring

Methods

plus :: Vector a -> Vector a -> Vector a #

zero :: Vector a #

times :: Vector a -> Vector a -> Vector a #

one :: Vector a #

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

Defined in Data.Semiring

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

Defined in Data.Semiring

Methods

plus :: Mul a -> Mul a -> Mul a #

zero :: Mul a #

times :: Mul a -> Mul a -> Mul a #

one :: Mul a #

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

Defined in Data.Semiring

Methods

plus :: Add a -> Add a -> Add a #

zero :: Add a #

times :: Add a -> Add a -> Add a #

one :: Add a #

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 #

(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) #

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 #

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 #

(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 contraint 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 #

(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 contraint 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 #

(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) #

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 #

(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 #

(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) #

(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) #

(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) #

(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) #

(+) :: 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 return zero.

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.

Types

newtype Add a #

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

Constructors

Add 

Fields

Instances
Functor Add # 
Instance details

Defined in Data.Semiring

Methods

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

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

Foldable Add # 
Instance details

Defined in Data.Semiring

Methods

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

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) #

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

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

Defined in Data.Semiring

Methods

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

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

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 #

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 #

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 #

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

Defined in Data.Semiring

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 #

Generic (Add a) # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep (Add a) :: Type -> Type #

Methods

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

to :: Rep (Add a) x -> 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 #

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 #

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 => Semiring (Add a) # 
Instance details

Defined in Data.Semiring

Methods

plus :: Add a -> Add a -> Add a #

zero :: Add a #

times :: Add a -> Add a -> Add a #

one :: Add a #

Generic1 Add # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep1 Add :: k -> Type #

Methods

from1 :: Add a -> Rep1 Add a #

to1 :: Rep1 Add a -> Add a #

type Rep (Add a) # 
Instance details

Defined in Data.Semiring

type Rep (Add a) = D1 (MetaData "Add" "Data.Semiring" "semirings-0.2.1.1-3ezCmeGAT9eKmowqHmpfrl" True) (C1 (MetaCons "Add" PrefixI True) (S1 (MetaSel (Just "getAdd") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)))
type Rep1 Add # 
Instance details

Defined in Data.Semiring

type Rep1 Add = D1 (MetaData "Add" "Data.Semiring" "semirings-0.2.1.1-3ezCmeGAT9eKmowqHmpfrl" True) (C1 (MetaCons "Add" PrefixI True) (S1 (MetaSel (Just "getAdd") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1))

newtype Mul a #

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

Constructors

Mul 

Fields

Instances
Functor Mul # 
Instance details

Defined in Data.Semiring

Methods

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

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

Foldable Mul # 
Instance details

Defined in Data.Semiring

Methods

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

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) #

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

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

Defined in Data.Semiring

Methods

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

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

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 #

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 #

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 #

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

Defined in Data.Semiring

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 #

Generic (Mul a) # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep (Mul a) :: Type -> Type #

Methods

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

to :: Rep (Mul a) x -> 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 #

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 #

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 => Semiring (Mul a) # 
Instance details

Defined in Data.Semiring

Methods

plus :: Mul a -> Mul a -> Mul a #

zero :: Mul a #

times :: Mul a -> Mul a -> Mul a #

one :: Mul a #

Generic1 Mul # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep1 Mul :: k -> Type #

Methods

from1 :: Mul a -> Rep1 Mul a #

to1 :: Rep1 Mul a -> Mul a #

type Rep (Mul a) # 
Instance details

Defined in Data.Semiring

type Rep (Mul a) = D1 (MetaData "Mul" "Data.Semiring" "semirings-0.2.1.1-3ezCmeGAT9eKmowqHmpfrl" True) (C1 (MetaCons "Mul" PrefixI True) (S1 (MetaSel (Just "getMul") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)))
type Rep1 Mul # 
Instance details

Defined in Data.Semiring

type Rep1 Mul = D1 (MetaData "Mul" "Data.Semiring" "semirings-0.2.1.1-3ezCmeGAT9eKmowqHmpfrl" True) (C1 (MetaCons "Mul" PrefixI True) (S1 (MetaSel (Just "getMul") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1))

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
Functor WrappedNum # 
Instance details

Defined in Data.Semiring

Methods

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

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

Foldable WrappedNum # 
Instance details

Defined in Data.Semiring

Methods

fold :: Monoid m => WrappedNum m -> 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) #

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

Defined in Data.Semiring

Enum a => Enum (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 #

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

Defined in Data.Semiring

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

Defined in Data.Semiring

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

Defined in Data.Semiring

Read a => Read (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

Generic (WrappedNum a) # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep (WrappedNum a) :: Type -> Type #

Methods

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

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

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 () #

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

Generic1 WrappedNum # 
Instance details

Defined in Data.Semiring

Associated Types

type Rep1 WrappedNum :: k -> Type #

type Rep (WrappedNum a) # 
Instance details

Defined in Data.Semiring

type Rep (WrappedNum a) = D1 (MetaData "WrappedNum" "Data.Semiring" "semirings-0.2.1.1-3ezCmeGAT9eKmowqHmpfrl" True) (C1 (MetaCons "WrapNum" PrefixI True) (S1 (MetaSel (Just "unwrapNum") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)))
type Rep1 WrappedNum # 
Instance details

Defined in Data.Semiring

type Rep1 WrappedNum = D1 (MetaData "WrappedNum" "Data.Semiring" "semirings-0.2.1.1-3ezCmeGAT9eKmowqHmpfrl" True) (C1 (MetaCons "WrapNum" PrefixI True) (S1 (MetaSel (Just "unwrapNum") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1))

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
Ring Bool # 
Instance details

Defined in Data.Semiring

Methods

negate :: Bool -> Bool #

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 Int8 # 
Instance details

Defined in Data.Semiring

Methods

negate :: Int8 -> Int8 #

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 Integer # 
Instance details

Defined in Data.Semiring

Methods

negate :: Integer -> Integer #

Ring Natural # 
Instance details

Defined in Data.Semiring

Methods

negate :: Natural -> Natural #

Ring Word # 
Instance details

Defined in Data.Semiring

Methods

negate :: Word -> Word #

Ring Word8 # 
Instance details

Defined in Data.Semiring

Methods

negate :: Word8 -> Word8 #

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 () # 
Instance details

Defined in Data.Semiring

Methods

negate :: () -> () #

Ring CDev # 
Instance details

Defined in Data.Semiring

Methods

negate :: CDev -> CDev #

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 COff # 
Instance details

Defined in Data.Semiring

Methods

negate :: COff -> COff #

Ring CPid # 
Instance details

Defined in Data.Semiring

Methods

negate :: CPid -> CPid #

Ring CSsize # 
Instance details

Defined in Data.Semiring

Methods

negate :: CSsize -> CSsize #

Ring CGid # 
Instance details

Defined in Data.Semiring

Methods

negate :: CGid -> CGid #

Ring CNlink # 
Instance details

Defined in Data.Semiring

Methods

negate :: CNlink -> CNlink #

Ring CUid # 
Instance details

Defined in Data.Semiring

Methods

negate :: CUid -> CUid #

Ring CCc # 
Instance details

Defined in Data.Semiring

Methods

negate :: CCc -> CCc #

Ring CSpeed # 
Instance details

Defined in Data.Semiring

Methods

negate :: CSpeed -> CSpeed #

Ring CTcflag # 
Instance details

Defined in Data.Semiring

Methods

negate :: CTcflag -> CTcflag #

Ring CRLim # 
Instance details

Defined in Data.Semiring

Methods

negate :: CRLim -> CRLim #

Ring Fd # 
Instance details

Defined in Data.Semiring

Methods

negate :: Fd -> Fd #

Ring CChar # 
Instance details

Defined in Data.Semiring

Methods

negate :: CChar -> CChar #

Ring CSChar # 
Instance details

Defined in Data.Semiring

Methods

negate :: CSChar -> CSChar #

Ring CUChar # 
Instance details

Defined in Data.Semiring

Methods

negate :: CUChar -> CUChar #

Ring CShort # 
Instance details

Defined in Data.Semiring

Methods

negate :: CShort -> CShort #

Ring CUShort # 
Instance details

Defined in Data.Semiring

Methods

negate :: CUShort -> CUShort #

Ring CInt # 
Instance details

Defined in Data.Semiring

Methods

negate :: CInt -> CInt #

Ring CUInt # 
Instance details

Defined in Data.Semiring

Methods

negate :: CUInt -> CUInt #

Ring CLong # 
Instance details

Defined in Data.Semiring

Methods

negate :: CLong -> CLong #

Ring CULong # 
Instance details

Defined in Data.Semiring

Methods

negate :: CULong -> CULong #

Ring CLLong # 
Instance details

Defined in Data.Semiring

Methods

negate :: CLLong -> CLLong #

Ring CULLong # 
Instance details

Defined in Data.Semiring

Methods

negate :: CULLong -> CULLong #

Ring CFloat # 
Instance details

Defined in Data.Semiring

Methods

negate :: CFloat -> CFloat #

Ring CDouble # 
Instance details

Defined in Data.Semiring

Methods

negate :: CDouble -> CDouble #

Ring CPtrdiff # 
Instance details

Defined in Data.Semiring

Methods

negate :: CPtrdiff -> CPtrdiff #

Ring CSize # 
Instance details

Defined in Data.Semiring

Methods

negate :: CSize -> CSize #

Ring CWchar # 
Instance details

Defined in Data.Semiring

Methods

negate :: CWchar -> CWchar #

Ring CSigAtomic # 
Instance details

Defined in Data.Semiring

Ring CClock # 
Instance details

Defined in Data.Semiring

Methods

negate :: CClock -> CClock #

Ring CTime # 
Instance details

Defined in Data.Semiring

Methods

negate :: CTime -> CTime #

Ring CUSeconds # 
Instance details

Defined in Data.Semiring

Ring CSUSeconds # 
Instance details

Defined in Data.Semiring

Ring CIntPtr # 
Instance details

Defined in Data.Semiring

Methods

negate :: CIntPtr -> CIntPtr #

Ring CUIntPtr # 
Instance details

Defined in Data.Semiring

Methods

negate :: CUIntPtr -> CUIntPtr #

Ring CIntMax # 
Instance details

Defined in Data.Semiring

Methods

negate :: CIntMax -> CIntMax #

Ring CUIntMax # 
Instance details

Defined in Data.Semiring

Methods

negate :: CUIntMax -> CUIntMax #

Ring WordPtr # 
Instance details

Defined in Data.Semiring

Methods

negate :: WordPtr -> WordPtr #

Ring IntPtr # 
Instance details

Defined in Data.Semiring

Methods

negate :: IntPtr -> IntPtr #

Ring a => Ring [a] # 
Instance details

Defined in Data.Semiring

Methods

negate :: [a] -> [a] #

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

Defined in Data.Semiring

Methods

negate :: Maybe a -> Maybe 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 #

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

Defined in Data.Semiring

Methods

negate :: Complex a -> Complex a #

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

Defined in Data.Semiring

Methods

negate :: Fixed a -> Fixed a #

Ring (Predicate a) # 
Instance details

Defined in Data.Semiring

Methods

negate :: Predicate a -> Predicate a #

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

Defined in Data.Semiring

Methods

negate :: Equivalence a -> Equivalence a #

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

Defined in Data.Semiring

Methods

negate :: Min a -> Min a #

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

Defined in Data.Semiring

Methods

negate :: Max a -> Max a #

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

Defined in Data.Semiring

Methods

negate :: Identity a -> Identity a #

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

Defined in Data.Semiring

Methods

negate :: Dual a -> Dual a #

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

Defined in Data.Semiring

Methods

negate :: Sum a -> Sum a #

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

Defined in Data.Semiring

Methods

negate :: Product a -> Product a #

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

Defined in Data.Semiring

Methods

negate :: Down a -> Down a #

(Unbox a, Ring a) => Ring (Vector a) # 
Instance details

Defined in Data.Semiring

Methods

negate :: Vector a -> Vector a #

(Storable a, Ring a) => Ring (Vector a) # 
Instance details

Defined in Data.Semiring

Methods

negate :: Vector a -> Vector a #

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

Defined in Data.Semiring

Methods

negate :: Vector a -> Vector a #

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

Defined in Data.Semiring

Methods

negate :: WrappedNum a -> WrappedNum a #

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

Defined in Data.Semiring

Methods

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

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

Defined in Data.Semiring.Generic

Methods

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

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 c) => Ring (a, b, c) # 
Instance details

Defined in Data.Semiring.Generic

Methods

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

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 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) #

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

Infix shorthand for minus.

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

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

x minus y = x + negate y