Îõ³h$&Á$·Û      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZNone #$-./>?ÀÉÔÖ×Ùì±o-clockConstraint alias for  units.o-clockÃThis class gives the integer associated with a type-level rational.o-clock4Rational numbers, with numerator and denominator of [ type.o-clock2Comparison of type-level rationals, as a function.:kind! (1 :% 42) >=% (5 :% 42)(1 :% 42) >=% (5 :% 42) :: Bool= 'False:kind! (5 :% 42) >=% (1 :% 42)(5 :% 42) >=% (1 :% 42) :: Bool= 'True:kind! (42 :% 1) >=% (42 :% 1)(42 :% 1) >=% (42 :% 1) :: Bool= 'Trueo-clock%Normalization of type-level rational.Example::kind! Normalize (9 % 11)Normalize (9 % 11) :: Rat = 9 :% 11:kind! Normalize (9 % 12)Normalize (9 % 12) :: Rat= 3 :% 4o-clock0Greatest common divisor for type-level naturals.Example::kind! Gcd 9 11Gcd 9 11 :: Nat= 1:kind! Gcd 9 12Gcd 9 12 :: Nat= 3o-clock!Division of type-level rationals. If there are  with \s a and b and another  with c d0 then the following formula should be applied: 3 \frac{a}{b} / \frac{c}{d} = \frac{a * d}{b * c} Example::kind! DivRat (9 % 11) (9 % 11)DivRat (9 % 11) (9 % 11) :: Rat= 1 :% 1o-clock#Type family for normalized pair of \s ”@ . o-clock1More convenient name for promoted constructor of . o-clockOverloaded division. o-clockOverloaded multiplication. o-clock'The result kind of overloaded division. o-clock-The result kind of overloaded multiplication.o-clockñData structure represents the rational number. Rational number can be represented as a pair of natural numbers n and m where m is nor equal to zero.o-clock Performs action with introduced ! constraint for rational numbers.   47None #$-/08?ÉÎÖ×Ùì7o-clockConstraint alias for  and  for time unit.o-clockConstraint alias for ] .o-clockType family for prettier ^ of time units.o-clockÅTime unit is represented as type level rational multiplier with kind ."o-clockReturns type-level _ of the time unit converted to `.#o-clockCreates  of some type from given [.$o-clockCreates ! from given [.sec 4242s%o-clockCreates   from given [.ms 4242ms&o-clockCreates  from given [.mcs 4242mcs'o-clockCreates  from given [.ns 4242ns(o-clockCreates  from given [.ps 4242ps)o-clockCreates  from given [. minute 4242m*o-clockCreates  from given [.hour 4242h+o-clockCreates  from given [.day 4242d,o-clockCreates  from given [.week 4242w-o-clockCreates  from given [. fortnight 4242fn.o-clock4Returns the greatest integer not greater than given ./o-clock Similar to a, but works with  units.floorUnit @Day (Time $ 5 % 2)2d floorUnit (Time @Second $ 2 % 3)0sfloorUnit $ ps 4242ps0o-clockConvert time to the b in given units.For example, instead of writing )foo :: POSIXTime foo = 10800 -- 3 hours 'one can write more safe implementation: foo = toNum @Second $ hour 3  Examples:toNum @Second @Natural $ hour 310800toNum @Minute @Int $ hour 3180toNum @Hour @Natural $ hour 331o-clock1Converts from one time unit to another time unit.toUnit @Hour (minute 120)2htoUnit @Second (ms 7)7/1000stoUnit @Week (Time @Day 45)6+3/7wtoUnit @Second @Minute (Time 3)180s$toUnit (day 42000000) :: Time Second3628800000000s2o-clockConvenient version of 8 which takes any time-unit and operates in any MonadIO. >>> threadDelay $ sec 2 ">>> threadDelay (2 :: Time Second) >>> threadDelay @Second 2 3o-clock Similar to c‰ but returns the CPU time used by the current program in the given time unit. The precision of this result is implementation-dependent. >>> getCPUTime @Second 1064046949/1000000000s 4o-clock Similar to d? but receiving any time unit instead of number of microseconds. .>>> timeout (sec 1) (putStrLn "Hello O'Clock") Hello O'Clock Just ()  ->>> timeout (ps 1) (putStrLn "Hello O'Clock") Nothing .>>> timeout (mcs 1) (putStrLn "Hello O'Clock") HellNothing 6o-clock-Addition is associative binary operation for e of .4o-clocktimeo-clockf actiono-clockreturns g0 if no result is available within the given time# !"#$%&'()*+,-./01234#! "#/.0$%&'()*+,-1234None  #$/?ÉÎ×ÙìÖ =o-clock Similar to & but has no units and can be negative.?o-clockConverts unix time to =.@o-clock(Returns the result of comparison of two = s and the ' of that difference of given time unit.,timeDiff @Second (Timestamp 4) (Timestamp 2)(GT,2s),timeDiff @Minute (Timestamp 4) (Timestamp 2) (GT,1/30m),timeDiff @Second (Timestamp 2) (Timestamp 4)(LT,2s),timeDiff @Minute (Timestamp 2) (Timestamp 4) (LT,1/30m)Ao-clock"Returns the result of addition of  with = elements.sec 5 `timeAdd` (Timestamp 4)Timestamp (9 % 1) minute 1 `timeAdd` (Timestamp 5)Timestamp (65 % 1)Bo-clock,Returns the result of multiplication of two  elements.Co-clockOperator version of B. 3 *:* sec 515s2 *:* 3 *:* sec 530s3 *:* 5 *:* sec 7105sms 2000 +:+ 2 *:* sec 38sDo-clock&Returns the result of division of two  elements.Eo-clockOperator version of D.sec 15 /:/ sec 35 % 1Fo-clockSums times of different units.minute 1 +:+ sec 161sGo-clock÷Substracts time amounts of different units. When the minuend is smaller than the subtrahend, this function will throw Underflow :: ArithException.minute 1 -:- sec 159sHo-clock¸Compute the difference between two amounts of time. The result is returned in two components: the ordering (which input is larger) and the numeric difference (how much larger). Unlike G, does not throw ArithException.sec 5 -%- sec 3(GT,2s)sec 5 -%- sec 6(LT,1s) =>?@ABCDEFGH =>?@ABCDEFGHC7E7F6G6H6None #$/0>?ÀÉÔÖ×Ùì$/Mo-clockClass for time parsing.ÉEmpty string on input will be parsed as 0 time of the required time unit:+seriesP @'[Hour, Minute, Second] @Second "" Just (0s)Examples8seriesP @'[Day, Hour, Minute, Second] @Minute "2d18h40m" Just (4000m)1seriesP @'[Day, Minute, Second] @Minute "2d1120m" Just (4000m)/seriesP @'[Hour, Minute, Second] @Second "1h1s" Just (3601s)3seriesP @'[Hour, Second, Millisecond] @Minute "90s" Just (1+1/2m)'seriesP @'[Hour, Second] @Second "11ns"Nothing)seriesP @'[Hour, Minute] @Minute "1+1/2h"Nothing)seriesP @'[Hour, Minute] @Minute "1+1/2m" Just (1+1/2m)+seriesP @'[Hour, Minute] @Minute "1h1+1/2m"Just (61+1/2m)Note:× The received list should be in descending order. It would be verified at compile-time.Oo-clockClass for time formatting.Examples3seriesF @'[Day, Hour, Minute, Second] (minute 4000) "2d18h40m"-seriesF @'[Day, Minute, Second] (minute 4000) "2d1120m"+seriesF @'[Hour, Minute, Second] (sec 3601)"1h1s"?@ABCDEFGHMNOPQRSTè      !"#$%&'()*+,-./0123456789:;<=>?@ABBCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd_ef_ghbci_jk_lm_no_p8_q9_jrbcs_tuö$o-clock-1.2.1-7TbHZhe8tn62aDtKt7HHyL Time.Rational Time.UnitsTime.Timestamp Time.SeriesControl.Concurrent threadDelayTime KnownDivRatKnownRatratValRatioNat>=% NormalizeGcdDivRat%:%/*DivKMulKRat::%withRuntimeDivRat $fKnownRat::% KnownRatName KnownUnitNameUnitNameunTime FortnightWeekDayHourMinute Picosecond Nanosecond Microsecond MillisecondSecond unitNameValtimesecmsmcsnspsminutehourdayweek fortnightfloorRat floorUnittoNumtoUnit getCPUTimetimeout $fMonoidTime$fSemigroupTime $fReadTime $fShowTime$fEqTime $fOrdTime $fEnumTime $fGenericTime Timestamp fromUnixTimetimeDifftimeAddtimeMul*:*timeDiv/:/+:+-:--%-$fShowTimestamp$fReadTimestamp $fEqTimestamp$fOrdTimestampSeriesPseriesPSeriesFseriesF...AllTimesunitsFunitsP $fSeriesF: $fSeriesF:0 $fSeriesF[] $fSeriesP: $fSeriesP:0 $fSeriesP[]base GHC.NaturalNaturalghc-prim GHC.TypesNat GHC.TypeLits KnownSymbolGHC.ShowshowSymbolGHC.BaseStringGHC.RealfloorGHC.NumNumSystem.CPUTimeSystem.Timeout SemigroupIO GHC.MaybeNothing