| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
DataForecast.TimeSeries
Description
- data TimeSeries parts where
- TimeSeries :: SPeriod p -> SummaryData -> Subparts subparts -> TimeSeries (p ': subparts)
- getSD :: TimeSeries parts -> SummaryData
- setSD :: SummaryData -> TimeSeries parts -> TimeSeries parts
- getSub :: TimeSeries (p ': subparts) -> Subparts subparts
- setSub :: Subparts subparts -> TimeSeries (p ': subparts) -> TimeSeries (p ': subparts)
- class BuildTS p where
- raw :: BuildTS p => Double -> TimeSeries '[p]
- fromRawData :: (BuildTS p, BuildTS parts) => [Double] -> TimeSeries '[p, parts]
- fromParts :: BuildTS part => [TimeSeries subparts] -> TimeSeries (part ': subparts)
- data TsPeriod
- data SPeriod x where
- data SummaryData = SummaryData {}
- defaultSummary :: SummaryData
- summaryWithTotal :: Double -> SummaryData
- setSdTotal :: Double -> SummaryData -> SummaryData
- setSdMean :: Double -> SummaryData -> SummaryData
- data Subparts parts = Subparts {
- subs :: [TimeSeries parts]
TimeSeries
data TimeSeries parts where Source #
Time series date representation with the resolution breakdown encoded in the type.
parts has kind '[TsPeriod]' which represents the hierarchical breakdown of
your data. You are responsible for providing the correct type hierarchy for
your data initially, but once you have done that the library ensures that all
analysis performed is valid.
In general you should not use the TimeSeries constructor directly, instead
use the raw and fromParts construction functions defined below.
Constructors
| TimeSeries :: SPeriod p -> SummaryData -> Subparts subparts -> TimeSeries (p ': subparts) |
Instances
| Eq (TimeSeries parts) Source # | |
| Show (TimeSeries parts) Source # | |
getSD :: TimeSeries parts -> SummaryData Source #
Get the SummaryData out of a TimeSeries.
setSD :: SummaryData -> TimeSeries parts -> TimeSeries parts Source #
Set the SummaryData field of a TimeSeries. We can't use record syntax
because https://ghc.haskell.org/trac/ghc/ticket/2595 is not implemented.
getSub :: TimeSeries (p ': subparts) -> Subparts subparts Source #
Get the Subparts out of a TimeSeries.
setSub :: Subparts subparts -> TimeSeries (p ': subparts) -> TimeSeries (p ': subparts) Source #
Set the Subparts of the TimeSeries.
Construction.
class BuildTS p where Source #
Typeclass for constructing TimeSeries with default data.
This is used by several of the TimeSeries construction functions such as
raw. It provides a convenient way for constructing time series of different
types with the same functions and allowing the concrete type to be pinned down
by a type signature.
Minimal complete definition
Methods
build :: SummaryData -> Subparts rest -> TimeSeries (p ': rest) Source #
raw :: BuildTS p => Double -> TimeSeries '[p] Source #
Construct a leaf TimeSeries with the given rawData.
Usually you should not need to use this directly and can instead use
fromRawData.
Example:
raw 42 :: TimeSeries '[ 'Year ]
fromRawData :: (BuildTS p, BuildTS parts) => [Double] -> TimeSeries '[p, parts] Source #
Construct a TimeSeries given the constituent raw data.
Example:
yearByQuarter :: TimeSeries '[ 'Year, 'Quarter ] yearByQuarter = fromRawData [ 10, 20, 30, 15 ]
fromParts :: BuildTS part => [TimeSeries subparts] -> TimeSeries (part ': subparts) Source #
Construct a TimeSeries given the constituent TimeSeries parts.
TsPeriod
Use promoted constructors to represent the different timeseries that we have. When using these as kinds you must prefix them with a single quote (').
Example:
raw 4 :: TimeSeries '[ 'Day ]
The singleton for the promoted TsPeriod type.
See https://www.schoolofhaskell.com/user/konn/prove-your-haskell-for-great-safety/dependent-types-in-haskell#singleton-patterns for details.
SummaryData
data SummaryData Source #
The summarization of the entire time series rooted at the current 'TimeSeries.
Instances
defaultSummary :: SummaryData Source #
The default SummaryData with Nothing for the sdtotal and sdmean.
summaryWithTotal :: Double -> SummaryData Source #
Construct a SummaryData with the sdtotal set.
setSdTotal :: Double -> SummaryData -> SummaryData Source #
Set the total for the SummaryData.
setSdMean :: Double -> SummaryData -> SummaryData Source #
Set the mean for the SummaryData.
Subparts
The constituent components of a TimeSeries. If the TimeSeries is just a
leaf with raw data then subs will be Nothing.
Constructors
| Subparts | |
Fields
| |