semiring-num 0.7.0.0 → 0.8.0.0
raw patch · 2 files changed
+54/−1 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Data.Semiring.Numeric: PosFrac :: a -> PosFrac a
+ Data.Semiring.Numeric: PosInt :: a -> PosInt a
+ Data.Semiring.Numeric: [getPosFrac] :: PosFrac a -> a
+ Data.Semiring.Numeric: [getPosInt] :: PosInt a -> a
+ Data.Semiring.Numeric: instance (GHC.Classes.Eq a, Data.Semiring.Semiring a, Data.Semiring.Infinite.HasPositiveInfinity a) => Data.Semiring.StarSemiring (Data.Semiring.Numeric.PosInt a)
+ Data.Semiring.Numeric: instance (GHC.Classes.Ord a, GHC.Real.Fractional a, Data.Semiring.Semiring a, Data.Semiring.Infinite.HasPositiveInfinity a) => Data.Semiring.StarSemiring (Data.Semiring.Numeric.PosFrac a)
+ Data.Semiring.Numeric: instance (GHC.Enum.Bounded a, Data.Semiring.Semiring a) => GHC.Enum.Bounded (Data.Semiring.Numeric.PosFrac a)
+ Data.Semiring.Numeric: instance (GHC.Enum.Bounded a, Data.Semiring.Semiring a) => GHC.Enum.Bounded (Data.Semiring.Numeric.PosInt a)
+ Data.Semiring.Numeric: instance Data.Foldable.Foldable Data.Semiring.Numeric.PosFrac
+ Data.Semiring.Numeric: instance Data.Foldable.Foldable Data.Semiring.Numeric.PosInt
+ Data.Semiring.Numeric: instance Data.Semiring.Semiring a => Data.Semiring.Semiring (Data.Semiring.Numeric.PosFrac a)
+ Data.Semiring.Numeric: instance Data.Semiring.Semiring a => Data.Semiring.Semiring (Data.Semiring.Numeric.PosInt a)
+ Data.Semiring.Numeric: instance Data.Traversable.Traversable Data.Semiring.Numeric.PosFrac
+ Data.Semiring.Numeric: instance Data.Traversable.Traversable Data.Semiring.Numeric.PosInt
+ Data.Semiring.Numeric: instance Foreign.Storable.Storable a => Foreign.Storable.Storable (Data.Semiring.Numeric.PosFrac a)
+ Data.Semiring.Numeric: instance Foreign.Storable.Storable a => Foreign.Storable.Storable (Data.Semiring.Numeric.PosInt a)
+ Data.Semiring.Numeric: instance GHC.Base.Functor Data.Semiring.Numeric.PosFrac
+ Data.Semiring.Numeric: instance GHC.Base.Functor Data.Semiring.Numeric.PosInt
+ Data.Semiring.Numeric: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Semiring.Numeric.PosFrac a)
+ Data.Semiring.Numeric: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Semiring.Numeric.PosInt a)
+ Data.Semiring.Numeric: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Semiring.Numeric.PosFrac a)
+ Data.Semiring.Numeric: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Semiring.Numeric.PosInt a)
+ Data.Semiring.Numeric: instance GHC.Enum.Enum a => GHC.Enum.Enum (Data.Semiring.Numeric.PosFrac a)
+ Data.Semiring.Numeric: instance GHC.Enum.Enum a => GHC.Enum.Enum (Data.Semiring.Numeric.PosInt a)
+ Data.Semiring.Numeric: instance GHC.Generics.Generic (Data.Semiring.Numeric.PosFrac a)
+ Data.Semiring.Numeric: instance GHC.Generics.Generic (Data.Semiring.Numeric.PosInt a)
+ Data.Semiring.Numeric: instance GHC.Generics.Generic1 Data.Semiring.Numeric.PosFrac
+ Data.Semiring.Numeric: instance GHC.Generics.Generic1 Data.Semiring.Numeric.PosInt
+ Data.Semiring.Numeric: instance GHC.Num.Num a => GHC.Num.Num (Data.Semiring.Numeric.PosFrac a)
+ Data.Semiring.Numeric: instance GHC.Num.Num a => GHC.Num.Num (Data.Semiring.Numeric.PosInt a)
+ Data.Semiring.Numeric: instance GHC.Read.Read a => GHC.Read.Read (Data.Semiring.Numeric.PosFrac a)
+ Data.Semiring.Numeric: instance GHC.Read.Read a => GHC.Read.Read (Data.Semiring.Numeric.PosInt a)
+ Data.Semiring.Numeric: instance GHC.Real.Fractional a => GHC.Real.Fractional (Data.Semiring.Numeric.PosFrac a)
+ Data.Semiring.Numeric: instance GHC.Real.Fractional a => GHC.Real.Fractional (Data.Semiring.Numeric.PosInt a)
+ Data.Semiring.Numeric: instance GHC.Real.Real a => GHC.Real.Real (Data.Semiring.Numeric.PosFrac a)
+ Data.Semiring.Numeric: instance GHC.Real.Real a => GHC.Real.Real (Data.Semiring.Numeric.PosInt a)
+ Data.Semiring.Numeric: instance GHC.Real.RealFrac a => GHC.Real.RealFrac (Data.Semiring.Numeric.PosFrac a)
+ Data.Semiring.Numeric: instance GHC.Real.RealFrac a => GHC.Real.RealFrac (Data.Semiring.Numeric.PosInt a)
+ Data.Semiring.Numeric: instance GHC.Show.Show a => GHC.Show.Show (Data.Semiring.Numeric.PosFrac a)
+ Data.Semiring.Numeric: instance GHC.Show.Show a => GHC.Show.Show (Data.Semiring.Numeric.PosInt a)
+ Data.Semiring.Numeric: newtype PosFrac a
+ Data.Semiring.Numeric: newtype PosInt a
Files
- semiring-num.cabal +1/−1
- src/Data/Semiring/Numeric.hs +53/−0
semiring-num.cabal view
@@ -1,5 +1,5 @@ name: semiring-num-version: 0.7.0.0+version: 0.8.0.0 synopsis: Basic semiring class and instances description: Adds a basic semiring class homepage: https://github.com/oisdk/semiring-num
src/Data/Semiring/Numeric.hs view
@@ -17,6 +17,8 @@ , Łukasiewicz(..) , Viterbi(..) , Log(..)+ , PosFrac(..)+ , PosInt(..) ) where import Data.Coerce@@ -144,3 +146,54 @@ {-# INLINE (<.>) #-} {-# INLINE zero #-} {-# INLINE one #-}++newtype PosFrac a = PosFrac+ { getPosFrac :: a+ } deriving (Eq, Ord, Read, Show, Generic, Generic1, Num+ ,Enum, Typeable, Storable, Fractional, Real, RealFrac+ ,Functor, Foldable, Traversable)++instance (Bounded a, Semiring a) => Bounded (PosFrac a) where+ minBound = PosFrac zero+ maxBound = PosFrac maxBound++instance Semiring a => Semiring (PosFrac a) where+ (<+>) = (coerce :: WrapBinary PosFrac a) (<+>)+ (<.>) = (coerce :: WrapBinary PosFrac a) (<.>)+ zero = PosFrac zero+ one = PosFrac one+ {-# INLINE (<+>) #-}+ {-# INLINE (<.>) #-}+ {-# INLINE zero #-}+ {-# INLINE one #-}++instance (Ord a, Fractional a, Semiring a, HasPositiveInfinity a) =>+ StarSemiring (PosFrac a) where+ star (PosFrac n)+ | n < 1 = PosFrac (1 / (1 - n))+ | otherwise = PosFrac positiveInfinity++newtype PosInt a = PosInt+ { getPosInt :: a+ } deriving (Eq, Ord, Read, Show, Generic, Generic1, Num+ ,Enum, Typeable, Storable, Fractional, Real, RealFrac+ ,Functor, Foldable, Traversable)++instance (Bounded a, Semiring a) => Bounded (PosInt a) where+ minBound = PosInt zero+ maxBound = PosInt maxBound++instance Semiring a => Semiring (PosInt a) where+ (<+>) = (coerce :: WrapBinary PosInt a) (<+>)+ (<.>) = (coerce :: WrapBinary PosInt a) (<.>)+ zero = PosInt zero+ one = PosInt one+ {-# INLINE (<+>) #-}+ {-# INLINE (<.>) #-}+ {-# INLINE zero #-}+ {-# INLINE one #-}++instance (Eq a, Semiring a, HasPositiveInfinity a) =>+ StarSemiring (PosInt a) where+ star (PosInt n) | n == zero = PosInt one+ star _ = PosInt positiveInfinity