semiring-num-1.6.0.4: Basic semiring class and instances

Safe HaskellNone
LanguageHaskell2010

Data.Semiring.Infinite

Description

This module provides various "infinite" wrappers, which can provide a detectable infinity to an otherwise non-infinite type.

Synopsis

Documentation

class HasPositiveInfinity a where Source #

A class for semirings with a concept of "infinity". It's important that this isn't regarded as the same as "bounded": x <+> positiveInfinity should probably equal positiveInfinity.

Methods

positiveInfinity :: a Source #

A positive infinite value

isPositiveInfinity :: a -> Bool Source #

Test if a value is positive infinity.

class HasNegativeInfinity a where Source #

A class for semirings with a concept of "negative infinity". It's important that this isn't regarded as the same as "bounded": x <+> negativeInfinity should probably equal negativeInfinity.

Methods

negativeInfinity :: a Source #

A negative infinite value

isNegativeInfinity :: a -> Bool Source #

Test if a value is negative infinity.

data NegativeInfinite a Source #

Adds negative infinity to a type. Useful for expressing detectable infinity in types like Integer, etc.

Constructors

NegativeInfinity 
NegFinite !a 
Instances
Functor NegativeInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

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

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

Applicative NegativeInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Foldable NegativeInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

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

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

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

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

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

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

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

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

toList :: NegativeInfinite a -> [a] #

null :: NegativeInfinite a -> Bool #

length :: NegativeInfinite a -> Int #

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

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

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

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

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

Traversable NegativeInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

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

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

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

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

Eq1 NegativeInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

liftEq :: (a -> b -> Bool) -> NegativeInfinite a -> NegativeInfinite b -> Bool #

Ord1 NegativeInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

liftCompare :: (a -> b -> Ordering) -> NegativeInfinite a -> NegativeInfinite b -> Ordering #

Read1 NegativeInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Show1 NegativeInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> NegativeInfinite a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [NegativeInfinite a] -> ShowS #

Unbox a => Vector Vector (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Unbox a => MVector MVector (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Bounded a => Bounded (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

(Enum a, Bounded a, Eq a) => Enum (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Eq a => Eq (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Num a => Num (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Ord a => Ord (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Read a => Read (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Show a => Show (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Generic (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Associated Types

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

Semigroup a => Semigroup (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

(Semigroup a, Monoid a) => Monoid (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Storable a => Storable (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

NFData a => NFData (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

rnf :: NegativeInfinite a -> () #

Unbox a => Unbox (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

HasNegativeInfinity (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

DetectableZero a => DetectableZero (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

DetectableZero a => Semiring (NegativeInfinite a) Source #

Doesn't follow annihilateL or mulDistribR.

Instance details

Defined in Data.Semiring.Infinite

Generic1 NegativeInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Associated Types

type Rep1 NegativeInfinite :: k -> Type #

data MVector s (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

type Rep (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

type Rep (NegativeInfinite a) = D1 (MetaData "NegativeInfinite" "Data.Semiring.Infinite" "semiring-num-1.6.0.4-dekzUTTALSHxRzVbKMHCa" False) (C1 (MetaCons "NegativeInfinity" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "NegFinite" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 a)))
data Vector (NegativeInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

type Rep1 NegativeInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

type Rep1 NegativeInfinite = D1 (MetaData "NegativeInfinite" "Data.Semiring.Infinite" "semiring-num-1.6.0.4-dekzUTTALSHxRzVbKMHCa" False) (C1 (MetaCons "NegativeInfinity" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "NegFinite" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) Par1))

data PositiveInfinite a Source #

Adds positive infinity to a type. Useful for expressing detectable infinity in types like Integer, etc.

Constructors

PosFinite !a 
PositiveInfinity 
Instances
Functor PositiveInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

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

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

Applicative PositiveInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Foldable PositiveInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

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

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

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

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

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

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

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

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

toList :: PositiveInfinite a -> [a] #

null :: PositiveInfinite a -> Bool #

length :: PositiveInfinite a -> Int #

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

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

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

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

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

Traversable PositiveInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

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

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

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

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

Eq1 PositiveInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

liftEq :: (a -> b -> Bool) -> PositiveInfinite a -> PositiveInfinite b -> Bool #

Ord1 PositiveInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

liftCompare :: (a -> b -> Ordering) -> PositiveInfinite a -> PositiveInfinite b -> Ordering #

Read1 PositiveInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Show1 PositiveInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> PositiveInfinite a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [PositiveInfinite a] -> ShowS #

Unbox a => Vector Vector (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Unbox a => MVector MVector (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Bounded a => Bounded (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

(Enum a, Bounded a, Eq a) => Enum (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Eq a => Eq (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Num a => Num (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Ord a => Ord (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Read a => Read (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Show a => Show (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Generic (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Associated Types

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

Semigroup a => Semigroup (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

(Semigroup a, Monoid a) => Monoid (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Storable a => Storable (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

NFData a => NFData (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

rnf :: PositiveInfinite a -> () #

Unbox a => Unbox (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

HasPositiveInfinity (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

DetectableZero a => DetectableZero (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

DetectableZero a => StarSemiring (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

DetectableZero a => Semiring (PositiveInfinite a) Source #

Only lawful when used with positive numbers.

Instance details

Defined in Data.Semiring.Infinite

Generic1 PositiveInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Associated Types

type Rep1 PositiveInfinite :: k -> Type #

data MVector s (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

type Rep (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

type Rep (PositiveInfinite a) = D1 (MetaData "PositiveInfinite" "Data.Semiring.Infinite" "semiring-num-1.6.0.4-dekzUTTALSHxRzVbKMHCa" False) (C1 (MetaCons "PosFinite" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 a)) :+: C1 (MetaCons "PositiveInfinity" PrefixI False) (U1 :: Type -> Type))
data Vector (PositiveInfinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

type Rep1 PositiveInfinite Source # 
Instance details

Defined in Data.Semiring.Infinite

type Rep1 PositiveInfinite = D1 (MetaData "PositiveInfinite" "Data.Semiring.Infinite" "semiring-num-1.6.0.4-dekzUTTALSHxRzVbKMHCa" False) (C1 (MetaCons "PosFinite" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) Par1) :+: C1 (MetaCons "PositiveInfinity" PrefixI False) (U1 :: Type -> Type))

data Infinite a Source #

Adds positive and negative infinity to a type. Useful for expressing detectable infinity in types like Integer, etc.

Constructors

Negative 
Finite !a 
Positive 
Instances
Functor Infinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

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

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

Applicative Infinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

pure :: a -> Infinite a #

(<*>) :: Infinite (a -> b) -> Infinite a -> Infinite b #

liftA2 :: (a -> b -> c) -> Infinite a -> Infinite b -> Infinite c #

(*>) :: Infinite a -> Infinite b -> Infinite b #

(<*) :: Infinite a -> Infinite b -> Infinite a #

Foldable Infinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

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

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

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

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

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

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

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

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

toList :: Infinite a -> [a] #

null :: Infinite a -> Bool #

length :: Infinite a -> Int #

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

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

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

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

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

Traversable Infinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

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

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

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

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

Eq1 Infinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

liftEq :: (a -> b -> Bool) -> Infinite a -> Infinite b -> Bool #

Ord1 Infinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

liftCompare :: (a -> b -> Ordering) -> Infinite a -> Infinite b -> Ordering #

Read1 Infinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (Infinite a) #

liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [Infinite a] #

liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (Infinite a) #

liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [Infinite a] #

Show1 Infinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Infinite a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Infinite a] -> ShowS #

Unbox a => Vector Vector (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Unbox a => MVector MVector (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Bounded (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

(Enum a, Bounded a, Eq a) => Enum (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Eq a => Eq (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

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

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

Num a => Num (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Ord a => Ord (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

compare :: Infinite a -> Infinite a -> Ordering #

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

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

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

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

max :: Infinite a -> Infinite a -> Infinite a #

min :: Infinite a -> Infinite a -> Infinite a #

Read a => Read (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Show a => Show (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

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

show :: Infinite a -> String #

showList :: [Infinite a] -> ShowS #

Generic (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Associated Types

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

Methods

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

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

Semigroup a => Semigroup (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

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

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

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

(Semigroup a, Monoid a) => Monoid (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

mempty :: Infinite a #

mappend :: Infinite a -> Infinite a -> Infinite a #

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

Storable a => Storable (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

sizeOf :: Infinite a -> Int #

alignment :: Infinite a -> Int #

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

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

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

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

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

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

NFData a => NFData (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

rnf :: Infinite a -> () #

Unbox a => Unbox (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

HasNegativeInfinity (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

HasPositiveInfinity (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

(DetectableZero a, Ord a) => DetectableZero (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

Methods

isZero :: Infinite a -> Bool Source #

(DetectableZero a, Ord a) => Semiring (Infinite a) Source #

Not distributive.

Instance details

Defined in Data.Semiring.Infinite

Generic1 Infinite Source # 
Instance details

Defined in Data.Semiring.Infinite

Associated Types

type Rep1 Infinite :: k -> Type #

Methods

from1 :: Infinite a -> Rep1 Infinite a #

to1 :: Rep1 Infinite a -> Infinite a #

data MVector s (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

data MVector s (Infinite a) = MV_Infinite !(MVector s Word8) !(MVector s a)
type Rep (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

type Rep (Infinite a) = D1 (MetaData "Infinite" "Data.Semiring.Infinite" "semiring-num-1.6.0.4-dekzUTTALSHxRzVbKMHCa" False) (C1 (MetaCons "Negative" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "Finite" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 a)) :+: C1 (MetaCons "Positive" PrefixI False) (U1 :: Type -> Type)))
data Vector (Infinite a) Source # 
Instance details

Defined in Data.Semiring.Infinite

type Rep1 Infinite Source # 
Instance details

Defined in Data.Semiring.Infinite

type Rep1 Infinite = D1 (MetaData "Infinite" "Data.Semiring.Infinite" "semiring-num-1.6.0.4-dekzUTTALSHxRzVbKMHCa" False) (C1 (MetaCons "Negative" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "Finite" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) Par1) :+: C1 (MetaCons "Positive" PrefixI False) (U1 :: Type -> Type)))