packages feed

monoid-statistics 1.0.0 → 1.0.1.0

raw patch · 3 files changed

+75/−12 lines, 3 filesdep ~math-functionsPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: math-functions

API changes (from Hackage documentation)

- Data.Monoid.Statistics.Class: instance (Data.Data.Data b, Data.Data.Data a) => Data.Data.Data (Data.Monoid.Statistics.Class.Pair a b)
- Data.Monoid.Statistics.Class: instance (Data.Vector.Unboxed.Base.Unbox a0, Data.Vector.Unboxed.Base.Unbox b0) => Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (Data.Monoid.Statistics.Class.Pair a0 b0)
- Data.Monoid.Statistics.Class: instance (Data.Vector.Unboxed.Base.Unbox a0, Data.Vector.Unboxed.Base.Unbox b0) => Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (Data.Monoid.Statistics.Class.Pair a0 b0)
- Data.Monoid.Statistics.Class: instance (Data.Vector.Unboxed.Base.Unbox a0, Data.Vector.Unboxed.Base.Unbox b0) => Data.Vector.Unboxed.Base.Unbox (Data.Monoid.Statistics.Class.Pair a0 b0)
- Data.Monoid.Statistics.Class: instance (GHC.Classes.Eq b, GHC.Classes.Eq a) => GHC.Classes.Eq (Data.Monoid.Statistics.Class.Pair a b)
- Data.Monoid.Statistics.Class: instance (GHC.Classes.Ord b, GHC.Classes.Ord a) => GHC.Classes.Ord (Data.Monoid.Statistics.Class.Pair a b)
- Data.Monoid.Statistics.Class: instance (GHC.Num.Num a, a ~ a') => Data.Monoid.Statistics.Class.StatMonoid (Data.Monoid.Product a) a'
- Data.Monoid.Statistics.Class: instance (GHC.Num.Num a, a ~ a') => Data.Monoid.Statistics.Class.StatMonoid (Data.Monoid.Sum a) a'
- Data.Monoid.Statistics.Class: instance (GHC.Show.Show b, GHC.Show.Show a) => GHC.Show.Show (Data.Monoid.Statistics.Class.Pair a b)
- Data.Monoid.Statistics.Class: instance GHC.Base.Monoid Numeric.Sum.KBNSum
- Data.Monoid.Statistics.Class: instance GHC.Base.Monoid Numeric.Sum.KahanSum
- Data.Monoid.Statistics.Numeric: instance (GHC.Classes.Ord a, a ~ a') => Data.Monoid.Statistics.Class.StatMonoid (Data.Monoid.Statistics.Numeric.Max a) a'
- Data.Monoid.Statistics.Numeric: instance (GHC.Classes.Ord a, a ~ a') => Data.Monoid.Statistics.Class.StatMonoid (Data.Monoid.Statistics.Numeric.Min a) a'
- Data.Monoid.Statistics.Numeric: instance Data.Vector.Unboxed.Base.Unbox a0 => Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (Data.Monoid.Statistics.Numeric.CountG a0)
- Data.Monoid.Statistics.Numeric: instance Data.Vector.Unboxed.Base.Unbox a0 => Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (Data.Monoid.Statistics.Numeric.CountG a0)
- Data.Monoid.Statistics.Numeric: instance Data.Vector.Unboxed.Base.Unbox a0 => Data.Vector.Unboxed.Base.Unbox (Data.Monoid.Statistics.Numeric.CountG a0)
- Data.Monoid.Statistics.Numeric: instance a ~ GHC.Types.Double => Data.Monoid.Statistics.Class.StatMonoid Data.Monoid.Statistics.Numeric.MaxD a
- Data.Monoid.Statistics.Numeric: instance a ~ GHC.Types.Double => Data.Monoid.Statistics.Class.StatMonoid Data.Monoid.Statistics.Numeric.MinD a
+ Data.Monoid.Statistics.Class: instance (Data.Data.Data a, Data.Data.Data b) => Data.Data.Data (Data.Monoid.Statistics.Class.Pair a b)
+ Data.Monoid.Statistics.Class: instance (Data.Vector.Unboxed.Base.Unbox a, Data.Vector.Unboxed.Base.Unbox b) => Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (Data.Monoid.Statistics.Class.Pair a b)
+ Data.Monoid.Statistics.Class: instance (Data.Vector.Unboxed.Base.Unbox a, Data.Vector.Unboxed.Base.Unbox b) => Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (Data.Monoid.Statistics.Class.Pair a b)
+ Data.Monoid.Statistics.Class: instance (Data.Vector.Unboxed.Base.Unbox a, Data.Vector.Unboxed.Base.Unbox b) => Data.Vector.Unboxed.Base.Unbox (Data.Monoid.Statistics.Class.Pair a b)
+ Data.Monoid.Statistics.Class: instance (GHC.Base.Semigroup a, GHC.Base.Semigroup b) => GHC.Base.Semigroup (Data.Monoid.Statistics.Class.Pair a b)
+ Data.Monoid.Statistics.Class: instance (GHC.Classes.Eq a, GHC.Classes.Eq b) => GHC.Classes.Eq (Data.Monoid.Statistics.Class.Pair a b)
+ Data.Monoid.Statistics.Class: instance (GHC.Classes.Ord a, GHC.Classes.Ord b) => GHC.Classes.Ord (Data.Monoid.Statistics.Class.Pair a b)
+ Data.Monoid.Statistics.Class: instance (GHC.Num.Num a, a Data.Type.Equality.~ a') => Data.Monoid.Statistics.Class.StatMonoid (Data.Semigroup.Internal.Product a) a'
+ Data.Monoid.Statistics.Class: instance (GHC.Num.Num a, a Data.Type.Equality.~ a') => Data.Monoid.Statistics.Class.StatMonoid (Data.Semigroup.Internal.Sum a) a'
+ Data.Monoid.Statistics.Class: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Data.Monoid.Statistics.Class.Pair a b)
+ Data.Monoid.Statistics.Numeric: instance (GHC.Classes.Ord a, a Data.Type.Equality.~ a') => Data.Monoid.Statistics.Class.StatMonoid (Data.Monoid.Statistics.Numeric.Max a) a'
+ Data.Monoid.Statistics.Numeric: instance (GHC.Classes.Ord a, a Data.Type.Equality.~ a') => Data.Monoid.Statistics.Class.StatMonoid (Data.Monoid.Statistics.Numeric.Min a) a'
+ Data.Monoid.Statistics.Numeric: instance (a Data.Type.Equality.~ GHC.Types.Double) => Data.Monoid.Statistics.Class.StatMonoid Data.Monoid.Statistics.Numeric.MaxD a
+ Data.Monoid.Statistics.Numeric: instance (a Data.Type.Equality.~ GHC.Types.Double) => Data.Monoid.Statistics.Class.StatMonoid Data.Monoid.Statistics.Numeric.MinD a
+ Data.Monoid.Statistics.Numeric: instance Data.Vector.Unboxed.Base.Unbox a => Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (Data.Monoid.Statistics.Numeric.CountG a)
+ Data.Monoid.Statistics.Numeric: instance Data.Vector.Unboxed.Base.Unbox a => Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (Data.Monoid.Statistics.Numeric.CountG a)
+ Data.Monoid.Statistics.Numeric: instance Data.Vector.Unboxed.Base.Unbox a => Data.Vector.Unboxed.Base.Unbox (Data.Monoid.Statistics.Numeric.CountG a)
+ Data.Monoid.Statistics.Numeric: instance GHC.Base.Semigroup Data.Monoid.Statistics.Numeric.BinomAcc
+ Data.Monoid.Statistics.Numeric: instance GHC.Base.Semigroup Data.Monoid.Statistics.Numeric.MaxD
+ Data.Monoid.Statistics.Numeric: instance GHC.Base.Semigroup Data.Monoid.Statistics.Numeric.MeanKBN
+ Data.Monoid.Statistics.Numeric: instance GHC.Base.Semigroup Data.Monoid.Statistics.Numeric.MeanKahan
+ Data.Monoid.Statistics.Numeric: instance GHC.Base.Semigroup Data.Monoid.Statistics.Numeric.MinD
+ Data.Monoid.Statistics.Numeric: instance GHC.Base.Semigroup Data.Monoid.Statistics.Numeric.Variance
+ Data.Monoid.Statistics.Numeric: instance GHC.Base.Semigroup Data.Monoid.Statistics.Numeric.WelfordMean
+ Data.Monoid.Statistics.Numeric: instance GHC.Classes.Ord a => GHC.Base.Semigroup (Data.Monoid.Statistics.Numeric.Max a)
+ Data.Monoid.Statistics.Numeric: instance GHC.Classes.Ord a => GHC.Base.Semigroup (Data.Monoid.Statistics.Numeric.Min a)
+ Data.Monoid.Statistics.Numeric: instance GHC.Real.Integral a => GHC.Base.Semigroup (Data.Monoid.Statistics.Numeric.CountG a)
- Data.Monoid.Statistics.Class: class Monoid m => StatMonoid m a where addValue m a = m <> singletonMonoid a singletonMonoid = addValue mempty
+ Data.Monoid.Statistics.Class: class Monoid m => StatMonoid m a

Files

Data/Monoid/Statistics/Class.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE BangPatterns          #-}+{-# LANGUAGE CPP                   #-} {-# LANGUAGE DeriveDataTypeable    #-} {-# LANGUAGE DeriveGeneric         #-} {-# LANGUAGE FlexibleInstances     #-}@@ -25,7 +26,10 @@   ) where  import           Data.Data    (Typeable,Data)-import           Data.Monoid+#if MIN_VERSION_base(4,9,0)+import qualified Data.Semigroup as SG (Semigroup(..))+#endif+import           Data.Monoid    (Monoid(..),(<>),Sum(..),Product(..)) import           Data.Vector.Unboxed          (Unbox) import           Data.Vector.Unboxed.Deriving (derivingUnbox) import qualified Data.Foldable       as F@@ -86,16 +90,10 @@ instance (Num a, a ~ a') => StatMonoid (Product a) a' where   singletonMonoid = Product -instance Monoid KahanSum where-  mempty        = zero-  mappend s1 s2 = add s1 (kahan s2) instance Real a => StatMonoid KahanSum a where   addValue m x = add m (realToFrac x)   {-# INLINE addValue #-} -instance Monoid KBNSum where-  mempty        = zero-  mappend s1 s2 = add s1 (kbn s2) instance Real a => StatMonoid KBNSum a where   addValue m x = add m (realToFrac x)   {-# INLINE addValue #-}@@ -109,12 +107,16 @@ data Pair a b = Pair !a !b               deriving (Show,Eq,Ord,Typeable,Data,Generic) +#if MIN_VERSION_base(4,9,0)+instance (SG.Semigroup a, SG.Semigroup b) => SG.Semigroup (Pair a b) where+  Pair x y <> Pair x' y' = Pair (x SG.<> x') (y SG.<> y')+#endif+ instance (Monoid a, Monoid b) => Monoid (Pair a b) where-  mempty = Pair mempty mempty-  mappend (Pair x y) (Pair x' y') =-    Pair (x <> x') (y <> y')+  mempty  = Pair mempty mempty+  mappend (Pair x y) (Pair x' y') = Pair (x <> x') (y <> y')   {-# INLINABLE mempty  #-}-  {-# INLINABLE mappend #-}+  {-# INLINE mappend #-}  instance (StatMonoid a x, StatMonoid b x) => StatMonoid (Pair a b) x where   addValue (Pair a b) !x = Pair (addValue a x) (addValue b x)
Data/Monoid/Statistics/Numeric.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE BangPatterns          #-}+{-# LANGUAGE CPP                   #-} {-# LANGUAGE DeriveDataTypeable    #-} {-# LANGUAGE DeriveGeneric         #-} {-# LANGUAGE FlexibleContexts      #-}@@ -43,6 +44,9 @@  import Data.Monoid                  ((<>)) import Data.Monoid.Statistics.Class+#if MIN_VERSION_base(4,9,0)+import qualified Data.Semigroup as SG (Semigroup(..))+#endif import Data.Data                    (Typeable,Data) import Data.Vector.Unboxed          (Unbox) import Data.Vector.Unboxed.Deriving (derivingUnbox)@@ -63,6 +67,11 @@ asCount :: CountG a -> CountG a asCount = id +#if MIN_VERSION_base(4,9,0)+instance Integral a => SG.Semigroup (CountG a) where+  (<>) = mappend+#endif+ instance Integral a => Monoid (CountG a) where   mempty                      = CountG 0   CountG i `mappend` CountG j = CountG (i + j)@@ -91,6 +100,11 @@ asMeanKahan :: MeanKahan -> MeanKahan asMeanKahan = id +#if MIN_VERSION_base(4,9,0)+instance SG.Semigroup MeanKahan where+  (<>) = mappend+#endif+ instance Monoid MeanKahan where   mempty = MeanKahan 0 mempty   MeanKahan 0  _  `mappend` m               = m@@ -116,6 +130,11 @@ asMeanKBN :: MeanKBN -> MeanKBN asMeanKBN = id +#if MIN_VERSION_base(4,9,0)+instance SG.Semigroup MeanKBN where+  (<>) = mappend+#endif+ instance Monoid MeanKBN where   mempty = MeanKBN 0 mempty   MeanKBN 0  _  `mappend` m             = m@@ -150,6 +169,11 @@ asWelfordMean :: WelfordMean -> WelfordMean asWelfordMean = id +#if MIN_VERSION_base(4,9,0)+instance SG.Semigroup WelfordMean where+  (<>) = mappend+#endif+ instance Monoid WelfordMean where   mempty = WelfordMean 0 0   mappend (WelfordMean 0 _) m = m@@ -191,6 +215,11 @@ asVariance = id {-# INLINE asVariance #-} +#if MIN_VERSION_base(4,9,0)+instance SG.Semigroup Variance where+  (<>) = mappend+#endif+ -- | Iterative algorithm for calculation of variance [Chan1979] instance Monoid Variance where   mempty = Variance 0 0 0@@ -234,6 +263,11 @@ newtype Min a = Min { calcMin :: Maybe a }               deriving (Show,Eq,Ord,Typeable,Data,Generic) +#if MIN_VERSION_base(4,9,0)+instance Ord a => SG.Semigroup (Min a) where+  (<>) = mappend+#endif+ instance Ord a => Monoid (Min a) where   mempty = Min Nothing   Min (Just a) `mappend` Min (Just b) = Min (Just $! min a b)@@ -249,6 +283,11 @@ newtype Max a = Max { calcMax :: Maybe a }               deriving (Show,Eq,Ord,Typeable,Data,Generic) +#if MIN_VERSION_base(4,9,0)+instance Ord a => SG.Semigroup (Max a) where+  (<>) = mappend+#endif+ instance Ord a => Monoid (Max a) where   mempty = Max Nothing   Max (Just a) `mappend` Max (Just b) = Max (Just $! min a b)@@ -271,6 +310,11 @@     | isNaN a && isNaN b = True     | otherwise          = a == b +#if MIN_VERSION_base(4,9,0)+instance SG.Semigroup MinD where+  (<>) = mappend+#endif+ -- N.B. forall (x :: Double) (x <= NaN) == False instance Monoid MinD where   mempty = MinD (0/0)@@ -296,6 +340,11 @@     | isNaN a && isNaN b = True     | otherwise          = a == b +#if MIN_VERSION_base(4,9,0)+instance SG.Semigroup MaxD where+  (<>) = mappend+#endif+ instance Monoid MaxD where   mempty = MaxD (0/0)   mappend (MaxD x) (MaxD y)@@ -320,6 +369,11 @@ -- | Type restricted 'id' asBinomAcc :: BinomAcc -> BinomAcc asBinomAcc = id++#if MIN_VERSION_base(4,9,0)+instance SG.Semigroup BinomAcc where+  (<>) = mappend+#endif  instance Monoid BinomAcc where   mempty = BinomAcc 0 0
monoid-statistics.cabal view
@@ -1,5 +1,5 @@ Name:           monoid-statistics-Version:        1.0.0+Version:        1.0.1.0 Cabal-Version:  >= 1.10 License:        BSD3 License-File:   LICENSE@@ -16,6 +16,13 @@   allows to calculate many statistics in one pass over data and   possibility to parallelize calculations. However not all statistics    could be calculated this way.++tested-with:+    GHC ==7.10.3+     || ==8.0.2+     || ==8.2.2+     || ==8.4.4+     || ==8.6.5  extra-source-files:   README.md