semiring-num-0.6.0.0: Basic semiring class and instances

LicenseMIT
Maintainermail@doisinkidney.com
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Data.Semiring.Numeric

Description

 

Synopsis

Documentation

newtype Bottleneck a Source #

Useful for some constraint problems.

(<+>) = max
(<.>) = min
zero  = minBound
one   = maxBound

Constructors

Bottleneck 

Fields

Instances

Monad Bottleneck Source # 

Methods

(>>=) :: Bottleneck a -> (a -> Bottleneck b) -> Bottleneck b #

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

return :: a -> Bottleneck a #

fail :: String -> Bottleneck a #

Functor Bottleneck Source # 

Methods

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

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

Applicative Bottleneck Source # 

Methods

pure :: a -> Bottleneck a #

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

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

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

Foldable Bottleneck Source # 

Methods

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

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

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

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

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

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

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

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

toList :: Bottleneck a -> [a] #

null :: Bottleneck a -> Bool #

length :: Bottleneck a -> Int #

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

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

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

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

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

Generic1 Bottleneck Source # 

Associated Types

type Rep1 (Bottleneck :: * -> *) :: * -> * #

Bounded a => Bounded (Bottleneck a) Source # 
Enum a => Enum (Bottleneck a) Source # 
Eq a => Eq (Bottleneck a) Source # 

Methods

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

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

Fractional a => Fractional (Bottleneck a) Source # 
Num a => Num (Bottleneck a) Source # 
Ord a => Ord (Bottleneck a) Source # 
Read a => Read (Bottleneck a) Source # 
Real a => Real (Bottleneck a) Source # 
RealFrac a => RealFrac (Bottleneck a) Source # 

Methods

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

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

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

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

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

Show a => Show (Bottleneck a) Source # 
Generic (Bottleneck a) Source # 

Associated Types

type Rep (Bottleneck a) :: * -> * #

Methods

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

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

Storable a => Storable (Bottleneck a) Source # 

Methods

sizeOf :: Bottleneck a -> Int #

alignment :: Bottleneck a -> Int #

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

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

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

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

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

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

(Bounded a, Ord a) => Semiring (Bottleneck a) Source # 
type Rep1 Bottleneck Source # 
type Rep1 Bottleneck = D1 (MetaData "Bottleneck" "Data.Semiring.Numeric" "semiring-num-0.6.0.0-3Tik01yeFpn7w0QSoV9lQ1" True) (C1 (MetaCons "Bottleneck" PrefixI True) (S1 (MetaSel (Just Symbol "getBottleneck") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1))
type Rep (Bottleneck a) Source # 
type Rep (Bottleneck a) = D1 (MetaData "Bottleneck" "Data.Semiring.Numeric" "semiring-num-0.6.0.0-3Tik01yeFpn7w0QSoV9lQ1" True) (C1 (MetaCons "Bottleneck" PrefixI True) (S1 (MetaSel (Just Symbol "getBottleneck") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)))

newtype Division a Source #

Positive numbers only.

(<+>) = gcd
(<.>) = lcm
zero  = zero
one   = one

Constructors

Division 

Fields

Instances

Monad Division Source # 

Methods

(>>=) :: Division a -> (a -> Division b) -> Division b #

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

return :: a -> Division a #

fail :: String -> Division a #

Functor Division Source # 

Methods

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

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

Applicative Division Source # 

Methods

pure :: a -> Division a #

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

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

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

Foldable Division Source # 

Methods

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

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

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

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

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

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

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

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

toList :: Division a -> [a] #

null :: Division a -> Bool #

length :: Division a -> Int #

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

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

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

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

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

Generic1 Division Source # 

Associated Types

type Rep1 (Division :: * -> *) :: * -> * #

Methods

from1 :: Division a -> Rep1 Division a #

to1 :: Rep1 Division a -> Division a #

Bounded a => Bounded (Division a) Source # 
Enum a => Enum (Division a) Source # 
Eq a => Eq (Division a) Source # 

Methods

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

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

Fractional a => Fractional (Division a) Source # 
Num a => Num (Division a) Source # 
Ord a => Ord (Division a) Source # 

Methods

compare :: Division a -> Division a -> Ordering #

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

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

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

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

max :: Division a -> Division a -> Division a #

min :: Division a -> Division a -> Division a #

Read a => Read (Division a) Source # 
Real a => Real (Division a) Source # 

Methods

toRational :: Division a -> Rational #

RealFrac a => RealFrac (Division a) Source # 

Methods

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

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

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

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

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

Show a => Show (Division a) Source # 

Methods

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

show :: Division a -> String #

showList :: [Division a] -> ShowS #

Generic (Division a) Source # 

Associated Types

type Rep (Division a) :: * -> * #

Methods

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

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

Storable a => Storable (Division a) Source # 

Methods

sizeOf :: Division a -> Int #

alignment :: Division a -> Int #

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

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

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

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

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

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

(Integral a, Semiring a) => Semiring (Division a) Source #

Only expects positive numbers

type Rep1 Division Source # 
type Rep1 Division = D1 (MetaData "Division" "Data.Semiring.Numeric" "semiring-num-0.6.0.0-3Tik01yeFpn7w0QSoV9lQ1" True) (C1 (MetaCons "Division" PrefixI True) (S1 (MetaSel (Just Symbol "getDivision") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1))
type Rep (Division a) Source # 
type Rep (Division a) = D1 (MetaData "Division" "Data.Semiring.Numeric" "semiring-num-0.6.0.0-3Tik01yeFpn7w0QSoV9lQ1" True) (C1 (MetaCons "Division" PrefixI True) (S1 (MetaSel (Just Symbol "getDivision") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)))

newtype Łukasiewicz a Source #

Wikipedia has some information on this. Also this paper.

(<+>)   = max
x <.> y = max 0 (x + y - 1)
zero    = zero
one     = one

Constructors

Łukasiewicz 

Fields

Instances

Monad Łukasiewicz Source # 
Functor Łukasiewicz Source # 

Methods

fmap :: (a -> b) -> Łukasiewicz a -> Łukasiewicz b #

(<$) :: a -> Łukasiewicz b -> Łukasiewicz a #

Applicative Łukasiewicz Source # 
Foldable Łukasiewicz Source # 

Methods

fold :: Monoid m => Łukasiewicz m -> m #

foldMap :: Monoid m => (a -> m) -> Łukasiewicz a -> m #

foldr :: (a -> b -> b) -> b -> Łukasiewicz a -> b #

foldr' :: (a -> b -> b) -> b -> Łukasiewicz a -> b #

foldl :: (b -> a -> b) -> b -> Łukasiewicz a -> b #

foldl' :: (b -> a -> b) -> b -> Łukasiewicz a -> b #

foldr1 :: (a -> a -> a) -> Łukasiewicz a -> a #

foldl1 :: (a -> a -> a) -> Łukasiewicz a -> a #

toList :: Łukasiewicz a -> [a] #

null :: Łukasiewicz a -> Bool #

length :: Łukasiewicz a -> Int #

elem :: Eq a => a -> Łukasiewicz a -> Bool #

maximum :: Ord a => Łukasiewicz a -> a #

minimum :: Ord a => Łukasiewicz a -> a #

sum :: Num a => Łukasiewicz a -> a #

product :: Num a => Łukasiewicz a -> a #

Generic1 Łukasiewicz Source # 

Associated Types

type Rep1 (Łukasiewicz :: * -> *) :: * -> * #

Bounded a => Bounded (Łukasiewicz a) Source # 
Enum a => Enum (Łukasiewicz a) Source # 
Eq a => Eq (Łukasiewicz a) Source # 
Fractional a => Fractional (Łukasiewicz a) Source # 
Num a => Num (Łukasiewicz a) Source # 
Ord a => Ord (Łukasiewicz a) Source # 
Read a => Read (Łukasiewicz a) Source # 
Real a => Real (Łukasiewicz a) Source # 
RealFrac a => RealFrac (Łukasiewicz a) Source # 
Show a => Show (Łukasiewicz a) Source # 
Generic (Łukasiewicz a) Source # 

Associated Types

type Rep (Łukasiewicz a) :: * -> * #

Methods

from :: Łukasiewicz a -> Rep (Łukasiewicz a) x #

to :: Rep (Łukasiewicz a) x -> Łukasiewicz a #

Storable a => Storable (Łukasiewicz a) Source # 
(Ord a, Num a) => Semiring (Łukasiewicz a) Source # 
type Rep1 Łukasiewicz Source # 
type Rep1 Łukasiewicz = D1 (MetaData "\321ukasiewicz" "Data.Semiring.Numeric" "semiring-num-0.6.0.0-3Tik01yeFpn7w0QSoV9lQ1" True) (C1 (MetaCons "\321ukasiewicz" PrefixI True) (S1 (MetaSel (Just Symbol "get\321ukasiewicz") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1))
type Rep (Łukasiewicz a) Source # 
type Rep (Łukasiewicz a) = D1 (MetaData "\321ukasiewicz" "Data.Semiring.Numeric" "semiring-num-0.6.0.0-3Tik01yeFpn7w0QSoV9lQ1" True) (C1 (MetaCons "\321ukasiewicz" PrefixI True) (S1 (MetaSel (Just Symbol "get\321ukasiewicz") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)))

newtype Viterbi a Source #

Wikipedia has some information on this. Also this paper. Apparently used for probabilistic parsing.

(<+>) = max
(<.>) = (<.>)
zero  = zero
one   = one

Constructors

Viterbi 

Fields

Instances

Monad Viterbi Source # 

Methods

(>>=) :: Viterbi a -> (a -> Viterbi b) -> Viterbi b #

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

return :: a -> Viterbi a #

fail :: String -> Viterbi a #

Functor Viterbi Source # 

Methods

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

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

Applicative Viterbi Source # 

Methods

pure :: a -> Viterbi a #

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

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

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

Foldable Viterbi Source # 

Methods

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

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

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

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

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

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

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

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

toList :: Viterbi a -> [a] #

null :: Viterbi a -> Bool #

length :: Viterbi a -> Int #

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

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

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

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

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

Generic1 Viterbi Source # 

Associated Types

type Rep1 (Viterbi :: * -> *) :: * -> * #

Methods

from1 :: Viterbi a -> Rep1 Viterbi a #

to1 :: Rep1 Viterbi a -> Viterbi a #

Bounded a => Bounded (Viterbi a) Source # 
Enum a => Enum (Viterbi a) Source # 

Methods

succ :: Viterbi a -> Viterbi a #

pred :: Viterbi a -> Viterbi a #

toEnum :: Int -> Viterbi a #

fromEnum :: Viterbi a -> Int #

enumFrom :: Viterbi a -> [Viterbi a] #

enumFromThen :: Viterbi a -> Viterbi a -> [Viterbi a] #

enumFromTo :: Viterbi a -> Viterbi a -> [Viterbi a] #

enumFromThenTo :: Viterbi a -> Viterbi a -> Viterbi a -> [Viterbi a] #

Eq a => Eq (Viterbi a) Source # 

Methods

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

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

Fractional a => Fractional (Viterbi a) Source # 

Methods

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

recip :: Viterbi a -> Viterbi a #

fromRational :: Rational -> Viterbi a #

Num a => Num (Viterbi a) Source # 

Methods

(+) :: Viterbi a -> Viterbi a -> Viterbi a #

(-) :: Viterbi a -> Viterbi a -> Viterbi a #

(*) :: Viterbi a -> Viterbi a -> Viterbi a #

negate :: Viterbi a -> Viterbi a #

abs :: Viterbi a -> Viterbi a #

signum :: Viterbi a -> Viterbi a #

fromInteger :: Integer -> Viterbi a #

Ord a => Ord (Viterbi a) Source # 

Methods

compare :: Viterbi a -> Viterbi a -> Ordering #

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

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

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

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

max :: Viterbi a -> Viterbi a -> Viterbi a #

min :: Viterbi a -> Viterbi a -> Viterbi a #

Read a => Read (Viterbi a) Source # 
Real a => Real (Viterbi a) Source # 

Methods

toRational :: Viterbi a -> Rational #

RealFrac a => RealFrac (Viterbi a) Source # 

Methods

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

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

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

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

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

Show a => Show (Viterbi a) Source # 

Methods

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

show :: Viterbi a -> String #

showList :: [Viterbi a] -> ShowS #

Generic (Viterbi a) Source # 

Associated Types

type Rep (Viterbi a) :: * -> * #

Methods

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

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

Storable a => Storable (Viterbi a) Source # 

Methods

sizeOf :: Viterbi a -> Int #

alignment :: Viterbi a -> Int #

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

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

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

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

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

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

(Ord a, Semiring a) => Semiring (Viterbi a) Source # 
type Rep1 Viterbi Source # 
type Rep1 Viterbi = D1 (MetaData "Viterbi" "Data.Semiring.Numeric" "semiring-num-0.6.0.0-3Tik01yeFpn7w0QSoV9lQ1" True) (C1 (MetaCons "Viterbi" PrefixI True) (S1 (MetaSel (Just Symbol "getViterbi") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1))
type Rep (Viterbi a) Source # 
type Rep (Viterbi a) = D1 (MetaData "Viterbi" "Data.Semiring.Numeric" "semiring-num-0.6.0.0-3Tik01yeFpn7w0QSoV9lQ1" True) (C1 (MetaCons "Viterbi" PrefixI True) (S1 (MetaSel (Just Symbol "getViterbi") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)))

newtype Log a Source #

Useful for optimizing multiplication, or working with large numbers.

(<.>)   = (+)
x <+> y = -(log (exp (-x) + exp (-y)))
zero    = ∞ -- represented by Nothing
one     = 0

Constructors

Log 

Fields

Instances

Monad Log Source # 

Methods

(>>=) :: Log a -> (a -> Log b) -> Log b #

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

return :: a -> Log a #

fail :: String -> Log a #

Functor Log Source # 

Methods

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

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

Applicative Log Source # 

Methods

pure :: a -> Log a #

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

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

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

Foldable Log Source # 

Methods

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

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

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

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

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

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

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

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

toList :: Log a -> [a] #

null :: Log a -> Bool #

length :: Log a -> Int #

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

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

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

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

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

Generic1 Log Source # 

Associated Types

type Rep1 (Log :: * -> *) :: * -> * #

Methods

from1 :: Log a -> Rep1 Log a #

to1 :: Rep1 Log a -> Log a #

Eq a => Eq (Log a) Source # 

Methods

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

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

Ord a => Ord (Log a) Source # 

Methods

compare :: Log a -> Log a -> Ordering #

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

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

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

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

max :: Log a -> Log a -> Log a #

min :: Log a -> Log a -> Log a #

Read a => Read (Log a) Source # 
Show a => Show (Log a) Source # 

Methods

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

show :: Log a -> String #

showList :: [Log a] -> ShowS #

Generic (Log a) Source # 

Associated Types

type Rep (Log a) :: * -> * #

Methods

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

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

(Semiring a, Floating a) => Semiring (Log a) Source # 

Methods

zero :: Log a Source #

one :: Log a Source #

(<.>) :: Log a -> Log a -> Log a Source #

(<+>) :: Log a -> Log a -> Log a Source #

type Rep1 Log Source # 
type Rep1 Log = D1 (MetaData "Log" "Data.Semiring.Numeric" "semiring-num-0.6.0.0-3Tik01yeFpn7w0QSoV9lQ1" True) (C1 (MetaCons "Log" PrefixI True) (S1 (MetaSel (Just Symbol "getLog") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec1 Maybe)))
type Rep (Log a) Source # 
type Rep (Log a) = D1 (MetaData "Log" "Data.Semiring.Numeric" "semiring-num-0.6.0.0-3Tik01yeFpn7w0QSoV9lQ1" True) (C1 (MetaCons "Log" PrefixI True) (S1 (MetaSel (Just Symbol "getLog") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe a))))