packages feed

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