Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell98 |
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
- class Semiring a where
- plus :: a -> a -> a
- zero :: a
- times :: a -> a -> a
- one :: a
- fromNatural :: Natural -> a
- (+) :: Semiring a => a -> a -> a
- (*) :: Semiring a => a -> a -> a
- (^) :: (Semiring a, Integral b) => a -> b -> a
- foldMapP :: (Foldable t, Semiring s) => (a -> s) -> t a -> s
- foldMapT :: (Foldable t, Semiring s) => (a -> s) -> t a -> s
- sum :: (Foldable t, Semiring a) => t a -> a
- product :: (Foldable t, Semiring a) => t a -> a
- sum' :: (Foldable t, Semiring a) => t a -> a
- product' :: (Foldable t, Semiring a) => t a -> a
- isZero :: (Eq a, Semiring a) => a -> Bool
- isOne :: (Eq a, Semiring a) => a -> Bool
- newtype Add a = Add {
- getAdd :: a
- newtype Mul a = Mul {
- getMul :: a
- newtype WrappedNum a = WrapNum {
- unwrapNum :: a
- newtype Mod2 = Mod2 {
- getMod2 :: Bool
- newtype IntSetOf a = IntSetOf {
- getIntSet :: IntSet
- newtype IntMapOf k v = IntMapOf {
- getIntMap :: IntMap v
- class Semiring a => Ring a where
- negate :: a -> a
- fromInteger :: Ring a => Integer -> a
- fromIntegral :: (Integral a, Ring b) => a -> b
- minus :: Ring a => a -> a -> a
- (-) :: Ring a => a -> a -> a
Semiring typeclass
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
Arguments
:: a | |
-> a | |
-> a | Commutative Operation |
Arguments
:: a | Commutative Unit |
Arguments
:: a | |
-> a | |
-> a | Associative Operation |
Arguments
:: a | Associative Unit |
Arguments
:: Natural | |
-> a | Homomorphism of additive semigroups |
Instances
Semiring CChar # | |
Semiring CClock # | |
Semiring CDouble # | |
Semiring CFloat # | |
Semiring CInt # | |
Semiring CIntMax # | |
Semiring CIntPtr # | |
Semiring CLLong # | |
Semiring CLong # | |
Semiring CPtrdiff # | |
Semiring CSChar # | |
Semiring CSUSeconds # | |
Semiring CShort # | |
Semiring CSigAtomic # | |
Semiring CSize # | |
Semiring CTime # | |
Semiring CUChar # | |
Semiring CUInt # | |
Semiring CUIntMax # | |
Semiring CUIntPtr # | |
Semiring CULLong # | |
Semiring CULong # | |
Semiring CUSeconds # | |
Semiring CUShort # | |
Semiring CWchar # | |
Semiring IntPtr # | |
Semiring WordPtr # | |
Semiring Int16 # | |
Semiring Int32 # | |
Semiring Int64 # | |
Semiring Int8 # | |
Semiring Word16 # | |
Semiring Word32 # | |
Semiring Word64 # | |
Semiring Word8 # | |
Semiring CCc # | |
Semiring CDev # | |
Semiring CGid # | |
Semiring CIno # | |
Semiring CMode # | |
Semiring CNlink # | |
Semiring COff # | |
Semiring CPid # | |
Semiring CRLim # | |
Semiring CSpeed # | |
Semiring CSsize # | |
Semiring CTcflag # | |
Semiring CUid # | |
Semiring Fd # | |
Semiring Mod2 # | |
Semiring Integer # | |
Semiring Natural # | |
Semiring () # | |
Semiring Bool # | |
Semiring Double # | |
Semiring Float # | |
Semiring Int # | |
Semiring Word # | |
Ring a => Semiring (Complex a) # | This instance can suffer due to floating point arithmetic. |
Semiring a => Semiring (Equivalence a) # | |
Semiring (Predicate a) # | |
Semiring a => Semiring (Identity a) # | |
Semiring a => Semiring (Down a) # | |
Semiring a => Semiring (Dual a) # | |
Integral a => Semiring (Ratio a) # | |
(Ord a, Monoid a) => Semiring (Set a) # | The multiplication laws are satisfied for
any underlying |
Semiring a => Semiring (IO a) # | |
Num a => Semiring (WrappedFractional a) # | |
Defined in Data.Euclidean Methods plus :: WrappedFractional a -> WrappedFractional a -> WrappedFractional a # zero :: WrappedFractional a # times :: WrappedFractional a -> WrappedFractional a -> WrappedFractional a # one :: WrappedFractional a # fromNatural :: Natural -> WrappedFractional a # | |
Num a => Semiring (WrappedIntegral a) # | |
Defined in Data.Euclidean Methods plus :: WrappedIntegral a -> WrappedIntegral a -> WrappedIntegral a # zero :: WrappedIntegral a # times :: WrappedIntegral a -> WrappedIntegral a -> WrappedIntegral a # one :: WrappedIntegral a # fromNatural :: Natural -> WrappedIntegral a # | |
(Coercible Int a, Monoid a) => Semiring (IntSetOf a) # | |
Num a => Semiring (WrappedNum a) # | |
Defined in Data.Semiring Methods plus :: WrappedNum a -> WrappedNum a -> WrappedNum a # zero :: WrappedNum a # times :: WrappedNum a -> WrappedNum a -> WrappedNum a # one :: WrappedNum a # fromNatural :: Natural -> WrappedNum a # | |
(Generic a, GSemiring (Rep a)) => Semiring (GenericSemiring a) # | |
Defined in Data.Semiring.Generic Methods plus :: GenericSemiring a -> GenericSemiring a -> GenericSemiring a # zero :: GenericSemiring a # times :: GenericSemiring a -> GenericSemiring a -> GenericSemiring a # one :: GenericSemiring a # fromNatural :: Natural -> GenericSemiring a # | |
(Eq a, Hashable a, Monoid a) => Semiring (HashSet a) # | The multiplication laws are satisfied for
any underlying |
Semiring a => Semiring (Maybe a) # | |
HasResolution a => Semiring (Fixed a) # | |
Semiring a => Semiring (Op a b) # | |
Semiring (Proxy a) # | |
(Ord k, Monoid k, Semiring v) => Semiring (Map k v) # | The multiplication laws are satisfied for
any underlying |
(Coercible Int k, Monoid k, Semiring v) => Semiring (IntMapOf k v) # | |
(Ord a, Monoid a, Extremum e) => Semiring (Tropical e a) # | |
(Eq k, Hashable k, Monoid k, Semiring v) => Semiring (HashMap k v) # | The multiplication laws are satisfied for
any underlying |
(Semiring a, Semiring b) => Semiring (a, b) # | |
Semiring b => Semiring (a -> b) # | |
Semiring a => Semiring (Const a b) # | |
(Semiring a, Applicative f) => Semiring (Ap f a) # | |
(Semiring a, Semiring b, Semiring c) => Semiring (a, b, c) # | |
(Semiring a, Semiring b, Semiring c, Semiring d) => Semiring (a, b, c, d) # | |
(Semiring a, Semiring b, Semiring c, Semiring d, Semiring e) => Semiring (a, b, c, d, e) # | |
(Semiring a, Semiring b, Semiring c, Semiring d, Semiring e, Semiring f) => Semiring (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) # | |
Defined in Data.Semiring.Generic |
(^) :: (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
.
Types
Instances
Foldable Add # | |
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 elem :: Eq a => a -> Add a -> Bool maximum :: Ord a => Add a -> a | |
Traversable Add # | |
Functor Add # | |
Generic1 Add # | |
Storable a => Storable (Add a) # | |
Defined in Data.Semiring Methods 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 () | |
Semiring a => Monoid (Add a) # | |
Semiring a => Semigroup (Add a) # | |
Bounded a => Bounded (Add a) # | |
Defined in Data.Semiring | |
Enum a => Enum (Add a) # | |
Generic (Add a) # | |
Num a => Num (Add a) # | |
Read a => Read (Add a) # | |
Fractional a => Fractional (Add a) # | |
Defined in Data.Semiring | |
Real a => Real (Add a) # | |
Defined in Data.Semiring Methods toRational :: Add a -> Rational | |
RealFrac a => RealFrac (Add a) # | |
Show a => Show (Add a) # | |
Eq a => Eq (Add a) # | |
Ord a => Ord (Add a) # | |
type Rep1 Add # | |
Defined in Data.Semiring type Rep1 Add = D1 ('MetaData "Add" "Data.Semiring" "semirings-0.6-9ytJH8Hyv3nHXGSEhbQm5T" 'True) (C1 ('MetaCons "Add" 'PrefixI 'True) (S1 ('MetaSel ('Just "getAdd") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) | |
type Rep (Add a) # | |
Defined in Data.Semiring type Rep (Add a) = D1 ('MetaData "Add" "Data.Semiring" "semirings-0.6-9ytJH8Hyv3nHXGSEhbQm5T" 'True) (C1 ('MetaCons "Add" 'PrefixI 'True) (S1 ('MetaSel ('Just "getAdd") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) |
Instances
Foldable Mul # | |
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 elem :: Eq a => a -> Mul a -> Bool maximum :: Ord a => Mul a -> a | |
Traversable Mul # | |
Functor Mul # | |
Generic1 Mul # | |
Storable a => Storable (Mul a) # | |
Defined in Data.Semiring Methods 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 () | |
Semiring a => Monoid (Mul a) # | |
Semiring a => Semigroup (Mul a) # | |
Bounded a => Bounded (Mul a) # | |
Defined in Data.Semiring | |
Enum a => Enum (Mul a) # | |
Generic (Mul a) # | |
Num a => Num (Mul a) # | |
Read a => Read (Mul a) # | |
Fractional a => Fractional (Mul a) # | |
Defined in Data.Semiring | |
Real a => Real (Mul a) # | |
Defined in Data.Semiring Methods toRational :: Mul a -> Rational | |
RealFrac a => RealFrac (Mul a) # | |
Show a => Show (Mul a) # | |
Eq a => Eq (Mul a) # | |
Ord a => Ord (Mul a) # | |
type Rep1 Mul # | |
Defined in Data.Semiring type Rep1 Mul = D1 ('MetaData "Mul" "Data.Semiring" "semirings-0.6-9ytJH8Hyv3nHXGSEhbQm5T" 'True) (C1 ('MetaCons "Mul" 'PrefixI 'True) (S1 ('MetaSel ('Just "getMul") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) | |
type Rep (Mul a) # | |
Defined in Data.Semiring type Rep (Mul a) = D1 ('MetaData "Mul" "Data.Semiring" "semirings-0.6-9ytJH8Hyv3nHXGSEhbQm5T" '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.
Instances
Foldable WrappedNum # | |
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 # | |
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 # | |
Defined in Data.Semiring Methods fmap :: (a -> b) -> WrappedNum a -> WrappedNum b # (<$) :: a -> WrappedNum b -> WrappedNum a # | |
Generic1 WrappedNum # | |
Defined in Data.Semiring Associated Types type Rep1 WrappedNum :: k -> Type Methods from1 :: forall (a :: k). WrappedNum a -> Rep1 WrappedNum a to1 :: forall (a :: k). Rep1 WrappedNum a -> WrappedNum a | |
Storable a => Storable (WrappedNum a) # | |
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) # | |
Defined in Data.Semiring Methods (.&.) :: WrappedNum a -> WrappedNum a -> WrappedNum a (.|.) :: WrappedNum a -> WrappedNum a -> WrappedNum a xor :: WrappedNum a -> WrappedNum a -> WrappedNum a complement :: WrappedNum a -> WrappedNum a shift :: WrappedNum a -> Int -> WrappedNum a rotate :: WrappedNum a -> Int -> WrappedNum a zeroBits :: WrappedNum a bit :: Int -> WrappedNum a setBit :: WrappedNum a -> Int -> WrappedNum a clearBit :: WrappedNum a -> Int -> WrappedNum a complementBit :: WrappedNum a -> Int -> WrappedNum a testBit :: WrappedNum a -> Int -> Bool bitSizeMaybe :: WrappedNum a -> Maybe Int bitSize :: WrappedNum a -> Int isSigned :: WrappedNum a -> Bool shiftL :: WrappedNum a -> Int -> WrappedNum a unsafeShiftL :: WrappedNum a -> Int -> WrappedNum a shiftR :: WrappedNum a -> Int -> WrappedNum a unsafeShiftR :: WrappedNum a -> Int -> WrappedNum a rotateL :: WrappedNum a -> Int -> WrappedNum a rotateR :: WrappedNum a -> Int -> WrappedNum a popCount :: WrappedNum a -> Int | |
Bounded a => Bounded (WrappedNum a) # | |
Defined in Data.Semiring | |
Enum a => Enum (WrappedNum a) # | |
Defined in Data.Semiring Methods succ :: WrappedNum a -> WrappedNum a pred :: WrappedNum a -> WrappedNum a toEnum :: Int -> WrappedNum a fromEnum :: WrappedNum a -> Int enumFrom :: WrappedNum a -> [WrappedNum a] enumFromThen :: WrappedNum a -> WrappedNum a -> [WrappedNum a] enumFromTo :: WrappedNum a -> WrappedNum a -> [WrappedNum a] enumFromThenTo :: WrappedNum a -> WrappedNum a -> WrappedNum a -> [WrappedNum a] | |
Generic (WrappedNum a) # | |
Defined in Data.Semiring Associated Types type Rep (WrappedNum a) :: Type -> Type | |
Num a => Num (WrappedNum a) # | |
Defined in Data.Semiring Methods (+) :: WrappedNum a -> WrappedNum a -> WrappedNum a (-) :: WrappedNum a -> WrappedNum a -> WrappedNum a (*) :: WrappedNum a -> WrappedNum a -> WrappedNum a negate :: WrappedNum a -> WrappedNum a abs :: WrappedNum a -> WrappedNum a signum :: WrappedNum a -> WrappedNum a fromInteger :: Integer -> WrappedNum a | |
Read a => Read (WrappedNum a) # | |
Defined in Data.Semiring Methods readsPrec :: Int -> ReadS (WrappedNum a) # readList :: ReadS [WrappedNum a] # readPrec :: ReadPrec (WrappedNum a) # readListPrec :: ReadPrec [WrappedNum a] # | |
Fractional a => Fractional (WrappedNum a) # | |
Defined in Data.Semiring Methods (/) :: WrappedNum a -> WrappedNum a -> WrappedNum a recip :: WrappedNum a -> WrappedNum a fromRational :: Rational -> WrappedNum a | |
Real a => Real (WrappedNum a) # | |
Defined in Data.Semiring Methods toRational :: WrappedNum a -> Rational | |
RealFrac a => RealFrac (WrappedNum a) # | |
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) # | |
Defined in Data.Semiring Methods showsPrec :: Int -> WrappedNum a -> ShowS show :: WrappedNum a -> String showList :: [WrappedNum a] -> ShowS | |
Eq a => Eq (WrappedNum a) # | |
Defined in Data.Semiring | |
Ord a => Ord (WrappedNum a) # | |
Defined in Data.Semiring Methods compare :: WrappedNum a -> WrappedNum a -> Ordering (<) :: WrappedNum a -> WrappedNum a -> Bool (<=) :: WrappedNum a -> WrappedNum a -> Bool (>) :: WrappedNum a -> WrappedNum a -> Bool (>=) :: WrappedNum a -> WrappedNum a -> Bool max :: WrappedNum a -> WrappedNum a -> WrappedNum a min :: WrappedNum a -> WrappedNum a -> WrappedNum a | |
Num a => Ring (WrappedNum a) # | |
Defined in Data.Semiring Methods negate :: WrappedNum a -> WrappedNum a # | |
Num a => Semiring (WrappedNum a) # | |
Defined in Data.Semiring Methods plus :: WrappedNum a -> WrappedNum a -> WrappedNum a # zero :: WrappedNum a # times :: WrappedNum a -> WrappedNum a -> WrappedNum a # one :: WrappedNum a # fromNatural :: Natural -> WrappedNum a # | |
type Rep1 WrappedNum # | |
Defined in Data.Semiring type Rep1 WrappedNum = D1 ('MetaData "WrappedNum" "Data.Semiring" "semirings-0.6-9ytJH8Hyv3nHXGSEhbQm5T" 'True) (C1 ('MetaCons "WrapNum" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapNum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) | |
type Rep (WrappedNum a) # | |
Defined in Data.Semiring type Rep (WrappedNum a) = D1 ('MetaData "WrappedNum" "Data.Semiring" "semirings-0.6-9ytJH8Hyv3nHXGSEhbQm5T" 'True) (C1 ('MetaCons "WrapNum" 'PrefixI 'True) (S1 ('MetaSel ('Just "unwrapNum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) |
Mod2
represents the integers mod 2.
It is useful in the computing of Zhegalkin polynomials.
Instances
Bounded Mod2 # | |
Defined in Data.Semiring | |
Enum Mod2 # | |
Generic Mod2 # | |
Read Mod2 # | |
Show Mod2 # | |
Eq Mod2 # | |
Ord Mod2 # | |
Euclidean Mod2 # | |
Field Mod2 # | |
Defined in Data.Euclidean | |
GcdDomain Mod2 # | |
Ring Mod2 # | |
Defined in Data.Semiring | |
Semiring Mod2 # | |
Star Mod2 # | |
type Rep Mod2 # | |
Defined in Data.Semiring type Rep Mod2 = D1 ('MetaData "Mod2" "Data.Semiring" "semirings-0.6-9ytJH8Hyv3nHXGSEhbQm5T" 'True) (C1 ('MetaCons "Mod2" 'PrefixI 'True) (S1 ('MetaSel ('Just "getMod2") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))) |
Wrapper to mimic Set
(Sum
Int
),
Set
(Product
Int
), etc.,
while having a more efficient underlying representation.
Instances
Generic1 IntSetOf # | |
Monoid (IntSetOf a) # | |
Semigroup (IntSetOf a) # | |
Generic (IntSetOf a) # | |
Read (IntSetOf a) # | |
Show (IntSetOf a) # | |
Eq (IntSetOf a) # | |
Ord (IntSetOf a) # | |
(Coercible Int a, Monoid a) => Semiring (IntSetOf a) # | |
type Rep1 IntSetOf # | |
Defined in Data.Semiring type Rep1 IntSetOf = D1 ('MetaData "IntSetOf" "Data.Semiring" "semirings-0.6-9ytJH8Hyv3nHXGSEhbQm5T" 'True) (C1 ('MetaCons "IntSetOf" 'PrefixI 'True) (S1 ('MetaSel ('Just "getIntSet") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IntSet))) | |
type Rep (IntSetOf a) # | |
Defined in Data.Semiring type Rep (IntSetOf a) = D1 ('MetaData "IntSetOf" "Data.Semiring" "semirings-0.6-9ytJH8Hyv3nHXGSEhbQm5T" 'True) (C1 ('MetaCons "IntSetOf" 'PrefixI 'True) (S1 ('MetaSel ('Just "getIntSet") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IntSet))) |
Wrapper to mimic Map
(Sum
Int
) v,
Map
(Product
Int
) v, etc.,
while having a more efficient underlying representation.
Instances
Generic1 (IntMapOf k :: Type -> Type) # | |
Monoid (IntMapOf k v) # | |
Semigroup (IntMapOf k v) # | |
Generic (IntMapOf k v) # | |
Read v => Read (IntMapOf k v) # | |
Show v => Show (IntMapOf k v) # | |
Eq v => Eq (IntMapOf k v) # | |
Ord v => Ord (IntMapOf k v) # | |
Defined in Data.Semiring | |
(Coercible Int k, Monoid k, Semiring v) => Semiring (IntMapOf k v) # | |
type Rep1 (IntMapOf k :: Type -> Type) # | |
Defined in Data.Semiring type Rep1 (IntMapOf k :: Type -> Type) = D1 ('MetaData "IntMapOf" "Data.Semiring" "semirings-0.6-9ytJH8Hyv3nHXGSEhbQm5T" 'True) (C1 ('MetaCons "IntMapOf" 'PrefixI 'True) (S1 ('MetaSel ('Just "getIntMap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 IntMap))) | |
type Rep (IntMapOf k v) # | |
Defined in Data.Semiring type Rep (IntMapOf k v) = D1 ('MetaData "IntMapOf" "Data.Semiring" "semirings-0.6-9ytJH8Hyv3nHXGSEhbQm5T" 'True) (C1 ('MetaCons "IntMapOf" 'PrefixI 'True) (S1 ('MetaSel ('Just "getIntMap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (IntMap v)))) |
Ring typeclass
class Semiring a => Ring a where #
Instances
Ring CChar # | |
Defined in Data.Semiring | |
Ring CClock # | |
Defined in Data.Semiring | |
Ring CDouble # | |
Defined in Data.Semiring | |
Ring CFloat # | |
Defined in Data.Semiring | |
Ring CInt # | |
Defined in Data.Semiring | |
Ring CIntMax # | |
Defined in Data.Semiring | |
Ring CIntPtr # | |
Defined in Data.Semiring | |
Ring CLLong # | |
Defined in Data.Semiring | |
Ring CLong # | |
Defined in Data.Semiring | |
Ring CPtrdiff # | |
Defined in Data.Semiring | |
Ring CSChar # | |
Defined in Data.Semiring | |
Ring CSUSeconds # | |
Defined in Data.Semiring | |
Ring CShort # | |
Defined in Data.Semiring | |
Ring CSigAtomic # | |
Defined in Data.Semiring | |
Ring CSize # | |
Defined in Data.Semiring | |
Ring CTime # | |
Defined in Data.Semiring | |
Ring CUChar # | |
Defined in Data.Semiring | |
Ring CUInt # | |
Defined in Data.Semiring | |
Ring CUIntMax # | |
Defined in Data.Semiring | |
Ring CUIntPtr # | |
Defined in Data.Semiring | |
Ring CULLong # | |
Defined in Data.Semiring | |
Ring CULong # | |
Defined in Data.Semiring | |
Ring CUSeconds # | |
Defined in Data.Semiring | |
Ring CUShort # | |
Defined in Data.Semiring | |
Ring CWchar # | |
Defined in Data.Semiring | |
Ring IntPtr # | |
Defined in Data.Semiring | |
Ring WordPtr # | |
Defined in Data.Semiring | |
Ring Int16 # | |
Defined in Data.Semiring | |
Ring Int32 # | |
Defined in Data.Semiring | |
Ring Int64 # | |
Defined in Data.Semiring | |
Ring Int8 # | |
Defined in Data.Semiring | |
Ring Word16 # | |
Defined in Data.Semiring | |
Ring Word32 # | |
Defined in Data.Semiring | |
Ring Word64 # | |
Defined in Data.Semiring | |
Ring Word8 # | |
Defined in Data.Semiring | |
Ring CCc # | |
Defined in Data.Semiring | |
Ring CDev # | |
Defined in Data.Semiring | |
Ring CGid # | |
Defined in Data.Semiring | |
Ring CIno # | |
Defined in Data.Semiring | |
Ring CMode # | |
Defined in Data.Semiring | |
Ring CNlink # | |
Defined in Data.Semiring | |
Ring COff # | |
Defined in Data.Semiring | |
Ring CPid # | |
Defined in Data.Semiring | |
Ring CRLim # | |
Defined in Data.Semiring | |
Ring CSpeed # | |
Defined in Data.Semiring | |
Ring CSsize # | |
Defined in Data.Semiring | |
Ring CTcflag # | |
Defined in Data.Semiring | |
Ring CUid # | |
Defined in Data.Semiring | |
Ring Fd # | |
Defined in Data.Semiring | |
Ring Mod2 # | |
Defined in Data.Semiring | |
Ring Integer # | |
Defined in Data.Semiring | |
Ring () # | |
Defined in Data.Semiring | |
Ring Double # | |
Defined in Data.Semiring | |
Ring Float # | |
Defined in Data.Semiring | |
Ring Int # | |
Defined in Data.Semiring | |
Ring Word # | |
Defined in Data.Semiring | |
Ring a => Ring (Complex a) # | |
Defined in Data.Semiring | |
Ring a => Ring (Identity a) # | |
Defined in Data.Semiring | |
Ring a => Ring (Down a) # | |
Defined in Data.Semiring | |
Ring a => Ring (Dual a) # | |
Defined in Data.Semiring | |
Integral a => Ring (Ratio a) # | |
Defined in Data.Semiring | |
Ring a => Ring (IO a) # | |
Defined in Data.Semiring | |
Num a => Ring (WrappedFractional a) # | |
Defined in Data.Euclidean Methods negate :: WrappedFractional a -> WrappedFractional a # | |
Num a => Ring (WrappedIntegral a) # | |
Defined in Data.Euclidean Methods negate :: WrappedIntegral a -> WrappedIntegral a # | |
Num a => Ring (WrappedNum a) # | |
Defined in Data.Semiring Methods negate :: WrappedNum a -> WrappedNum a # | |
HasResolution a => Ring (Fixed a) # | |
Defined in Data.Semiring | |
Ring a => Ring (Op a b) # | |
Defined in Data.Semiring | |
(Ring a, Ring b) => Ring (a, b) # | |
Defined in Data.Semiring.Generic | |
Ring b => Ring (a -> b) # | |
Defined in Data.Semiring | |
Ring a => Ring (Const a b) # | |
Defined in Data.Semiring | |
(Ring a, Applicative f) => Ring (Ap f a) # | |
Defined in Data.Semiring | |
(Ring a, Ring b, Ring c) => Ring (a, b, c) # | |
Defined in Data.Semiring.Generic | |
(Ring a, Ring b, Ring c, Ring d) => Ring (a, b, c, d) # | |
Defined in Data.Semiring.Generic | |
(Ring a, Ring b, Ring c, Ring d, Ring e) => Ring (a, b, c, d, e) # | |
Defined in Data.Semiring.Generic | |
(Ring a, Ring b, Ring c, Ring d, Ring e, Ring f) => Ring (a, b, c, d, e, f) # | |
Defined in Data.Semiring.Generic | |
(Ring a, Ring b, Ring c, Ring d, Ring e, Ring f, Ring g) => Ring (a, b, c, d, e, f, g) # | |
Defined in Data.Semiring.Generic |
fromInteger :: Ring a => Integer -> a #
fromIntegral :: (Integral a, Ring b) => a -> b #
Convert from integral to ring.