interval-patterns-0.8.0: Intervals, and monoids thereof
Safe HaskellSafe-Inferred
LanguageGHC2021

Data.Calendar

Synopsis

Documentation

type Event n = Layers UTCTime (Sum n) Source #

An Event is a collection of Timeframes that keeps track of how deeply a particular interval has been overlapped.

type Event n = Layers UTCTime (Sum n)

event :: Num n => Timeframe -> Event n Source #

Make a new Event from a Timeframe with default thickness 1.

event = eventSize 1

eventSize :: Num n => n -> Timeframe -> Event n Source #

Make an Event with the given size from a Timeframe.

erlangs :: Real n => Timeframe -> Event n -> Maybe Rational Source #

Measure the carried load of an Event over a given Timeframe. In other words: how many copies of you would you need, in order to attend all of the simultaneous happenings over a given span (on average)?

newtype Calendar ev n Source #

A Calendar is a map from a given event type to durations.

Constructors

Calendar 

Fields

Instances

Instances details
(Ord ev, Ord n, Num n) => Monoid (Calendar ev n) Source # 
Instance details

Defined in Data.Calendar

Methods

mempty :: Calendar ev n #

mappend :: Calendar ev n -> Calendar ev n -> Calendar ev n #

mconcat :: [Calendar ev n] -> Calendar ev n #

(Ord ev, Ord n, Num n) => Semigroup (Calendar ev n) Source # 
Instance details

Defined in Data.Calendar

Methods

(<>) :: Calendar ev n -> Calendar ev n -> Calendar ev n #

sconcat :: NonEmpty (Calendar ev n) -> Calendar ev n #

stimes :: Integral b => b -> Calendar ev n -> Calendar ev n #

(Show ev, Show n) => Show (Calendar ev n) Source # 
Instance details

Defined in Data.Calendar

Methods

showsPrec :: Int -> Calendar ev n -> ShowS #

show :: Calendar ev n -> String #

showList :: [Calendar ev n] -> ShowS #

(Eq ev, Eq n) => Eq (Calendar ev n) Source # 
Instance details

Defined in Data.Calendar

Methods

(==) :: Calendar ev n -> Calendar ev n -> Bool #

(/=) :: Calendar ev n -> Calendar ev n -> Bool #

(Ord ev, Ord n) => Ord (Calendar ev n) Source # 
Instance details

Defined in Data.Calendar

Methods

compare :: Calendar ev n -> Calendar ev n -> Ordering #

(<) :: Calendar ev n -> Calendar ev n -> Bool #

(<=) :: Calendar ev n -> Calendar ev n -> Bool #

(>) :: Calendar ev n -> Calendar ev n -> Bool #

(>=) :: Calendar ev n -> Calendar ev n -> Bool #

max :: Calendar ev n -> Calendar ev n -> Calendar ev n #

min :: Calendar ev n -> Calendar ev n -> Calendar ev n #

singleton :: (Ord ev, Ord n, Num n) => ev -> Event n -> Calendar ev n Source #

Make a Calendar from an Event.

calendar :: (Ord ev, Ord n, Num n) => ev -> Timeframe -> Calendar ev n Source #

Make a Calendar from a Timeframe.

insert :: (Ord ev, Ord n, Num n) => ev -> Event n -> Calendar ev n -> Calendar ev n Source #

Insert an Event of the given sort into a Calendar.

(!?) :: (Ord ev, Ord n, Num n) => Calendar ev n -> ev -> Maybe (Event n) Source #

Get the Event corresponding to a given key, or Nothing if the key is not present.

(!) :: (Ord ev, Ord n, Num n) => Calendar ev n -> ev -> Event n Source #

Get the Event corresponding to a given key, or mempty if the key is not present.

toList :: (Ord ev, Ord n, Num n) => Calendar ev n -> [(ev, [(Interval UTCTime, n)])] Source #

happeningAt :: (Ord ev, Ord n, Num n) => UTCTime -> Calendar ev n -> [(ev, n)] Source #

What, and how many events are happening at the given UTCTime on this Calendar?

coalesce :: (Ord ev, Ord n, Num n) => Calendar ev n -> Event n Source #

Consider every kind of event the same, and observe the overall Layers.

totalDuration :: forall ev n. (Ord ev, Real n) => ev -> Calendar ev n -> Maybe NominalDiffTime Source #

Calculate the total length of a particular event across all occurrences.