{-# LANGUAGE ExistentialQuantification #-}
module Data.Metrics.MovingAverage where
data MovingAverage = forall s. MovingAverage
{ ()
movingAverageClear :: !(s -> s)
, ()
movingAverageUpdate :: !(Double -> s -> s)
, ()
movingAverageTick :: !(s -> s)
, ()
movingAverageRate :: !(s -> Double)
, ()
movingAverageState :: !s
}
instance Show MovingAverage where
show :: MovingAverage -> String
show (MovingAverage s -> s
_ Double -> s -> s
_ s -> s
_ s -> Double
r s
s) = String
"MovingAverage {movingAverageRate = " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Double -> String
forall a. Show a => a -> String
show (s -> Double
r s
s) String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"}"
clear :: MovingAverage -> MovingAverage
clear :: MovingAverage -> MovingAverage
clear (MovingAverage s -> s
c Double -> s -> s
u s -> s
t s -> Double
r s
s) = (s -> s)
-> (Double -> s -> s)
-> (s -> s)
-> (s -> Double)
-> s
-> MovingAverage
forall s.
(s -> s)
-> (Double -> s -> s)
-> (s -> s)
-> (s -> Double)
-> s
-> MovingAverage
MovingAverage s -> s
c Double -> s -> s
u s -> s
t s -> Double
r (s -> s
c s
s)
{-# INLINEABLE clear #-}
rate :: MovingAverage -> Double
rate :: MovingAverage -> Double
rate (MovingAverage s -> s
_ Double -> s -> s
_ s -> s
_ s -> Double
r s
s) = s -> Double
r s
s
{-# INLINEABLE rate #-}
tick :: MovingAverage -> MovingAverage
tick :: MovingAverage -> MovingAverage
tick (MovingAverage s -> s
c Double -> s -> s
u s -> s
t s -> Double
r s
s) = (s -> s)
-> (Double -> s -> s)
-> (s -> s)
-> (s -> Double)
-> s
-> MovingAverage
forall s.
(s -> s)
-> (Double -> s -> s)
-> (s -> s)
-> (s -> Double)
-> s
-> MovingAverage
MovingAverage s -> s
c Double -> s -> s
u s -> s
t s -> Double
r (s -> s
t s
s)
{-# INLINEABLE tick #-}
update :: Double -> MovingAverage -> MovingAverage
update :: Double -> MovingAverage -> MovingAverage
update Double
x (MovingAverage s -> s
c Double -> s -> s
u s -> s
t s -> Double
r s
s) = (s -> s)
-> (Double -> s -> s)
-> (s -> s)
-> (s -> Double)
-> s
-> MovingAverage
forall s.
(s -> s)
-> (Double -> s -> s)
-> (s -> s)
-> (s -> Double)
-> s
-> MovingAverage
MovingAverage s -> s
c Double -> s -> s
u s -> s
t s -> Double
r (Double -> s -> s
u Double
x s
s)
{-# INLINEABLE update #-}