úÎ!ާˆ·[      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZNone"#,-.=>?HSUVXk$yo-clockConstraint alias for  units.o-clockCThis 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= 3\o-clock,Division of type-level rational and natural.Example::kind! DivRatNat (9 % 11) 2DivRatNat (9 % 11) 2 :: Rat = 9 :% 22]o-clock3Multiplication of type-level natural with rational.Example::kind! MulNatRat 2 (9 % 11)MulNatRat 2 (9 % 11) :: Rat = 18 :% 11^o-clock(Multiplication for type-level rationals.Example::kind! MulRat (2 % 3) (9 % 11)MulRat (2 % 3) (9 % 11) :: Rat = 6 :% 11o-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-clockqData 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"#,./7>HMUVXkK<o-clockConstraint alias for  and  for time unit.o-clockConstraint alias for ` .o-clockType family for prettier a of time units.o-clockETime unit is represented as type level rational multiplier with kind ."o-clockReturns type-level b of the time unit converted to c.#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 d, but works with  units.floorUnit @Day (Time $ 5 % 2)2d floorUnit (Time @Second $ 2 % 3)0sfloorUnit $ ps 4242ps0o-clockConvert time to the e 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 f‰ 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 g? 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 h of .4o-clocktimeo-clocki actiono-clockreturns j0 if no result is available within the given time# !"#$%&'()*+,-./01234#! "#/.0$%&'()*+,-1234None "#.>HMVXkbà =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-clockwSubstracts 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"#./=>?HSUVXk†ÍMo-clockClass for time parsing.IEmpty 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:W 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"<seriesF @'[Hour, Second, Millisecond] (Time @Minute $ 3 % 2)"90s"#seriesF @'[Hour, Second] (minute 0)"0h"4seriesF @'[Hour, Minute, Second] (Time @Day (2 % 7))"6h51m25+5/7s"qThe received list should be in descending order. It would be verified at compile-time. Example of the error from ghci:+seriesF @'[Millisecond, Second] (minute 42)...1 " List of units should be in descending orderD " In the expression: seriesF @'[Millisecond, Second] (minute 42) In an equation for it :: it = seriesF @'[Millisecond, Second] (minute 42)...ko-clockVType family for verification of the descending order of the given list of time units.Qo-clock±Creates the list of time units in descending order by provided the highest and the lowest bound of the desired list. Throws the error when time units are not in the right order.Usage example:EseriesF @(Hour ... Second) $ hour 3 +:+ minute 5 +:+ sec 3 +:+ ms 123"3h5m3+123/1000s"Ro-clock*Type-level list that consist of all times.So-clock Similar to P2, but formats using all time units of the library.unitsF $ fortnight 5"5fn"unitsF $ minute 4000 "2d18h40m"To-clock Similar to N1, but parses using all time units of the library.unitsP @Second "1m" Just (60s)unitsP @Minute "2d18h40m" Just (4000m)MNOPQRSTRQOPSMNTNone "#HVXk‡“H  !"#$%&'()*+,-./01234=>?@ABCDEFGHMNOPQRSTl      !"#$%&'()*+,-./0123456789:;<=>?@ABBCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg_hi_jkefl_mn_op_qr_s8_t9_muefv_wxyz$o-clock-1.2.0-2ocKCUMRZdX5XKxr1QwRYe 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.NaturalNatural DivRatNat MulNatRatMulRatghc-prim GHC.TypesNat GHC.TypeLits KnownSymbolGHC.ShowshowSymbolGHC.BaseStringGHC.RealfloorGHC.NumNumSystem.CPUTimeSystem.Timeout SemigroupIO GHC.MaybeNothing IsDescending