duration-0.2.0.0: A tiny compile-time time utility library inspired by zeit/ms
Copyright(c) Ryota Kameoka 2018
LicenseBSD-3
Maintainerkameoka.ryota@gmail.com
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Data.Time.Clock.Duration

Contents

Description

A tiny compile-time time utility library, inspired by zeit/ms.

Synopsis

Quasiquoters

t :: QuasiQuoter Source #

A quasiquoter to denote a duration.

>>> [t| 42s |] :: DiffTime 42s 
>>> [t| 1day |] :: DiffTime 86400s 

The expression has the type of AbsoluteDuration a => a.

>>> [t| 1ms |] :: NominalDiffTime 0.001s 
>>> [t| 1ms |] :: CSUSeconds 1000 
>>> [t| 1ms |] :: CUSeconds 1000 

You can use various expressions inside the quasiquoter. (See Time for details.)

>>> [t| 1ms |] :: DiffTime 0.001s 
>>> [t| 1s |] :: DiffTime 1s 
>>> [t| 1m |] :: DiffTime 60s 
>>> [t| 1h |] :: DiffTime 3600s 
>>> [t| 1d |] :: DiffTime 86400s 
>>> [t| 1w |] :: DiffTime 604800s 
>>> [t| 1y |] :: DiffTime 31536000s 

s :: QuasiQuoter Source #

A quasiquoter to denote a duration in seconds. Its behavior varies according to what you give to the quasiquoter.

When a unitless number (like 42) is supplied to s, the expression has the type of AbsoluteDuration a => a.

>>> [s| 42 |] :: DiffTime 42s 

When you pass a string with a number and a valid unit (like 42s), the expression has the type of RelativeDuration a => a, and it represents how long the given duration is in seconds.

For example, how long is 42 minutes in seconds?

>>> [s| 42m |] :: Int 2520 

Note that short durations can be rounded to zero when treated as an integer.

>>> [s| 1ms |] :: Int 0 >>> [s| 1ms |] :: Integer 0 

To avoid this, use Ratio or Float instead.

>>> [s| 1ms |] :: Rational 1 % 1000 >>> [s| 1ms |] :: Float 1.0e-3 

ms :: QuasiQuoter Source #

A quasiquoter to denote a duration in milliseconds. See s for detailed usage.

>>> [ms| 42 |] :: DiffTime 0.042s 
>>> [ms| 42s |] :: Integer 42000 

µs :: QuasiQuoter Source #

A quasiquoter to denote a duration in microseconds. See s for detailed usage.

>>> [µs| 42 |] :: DiffTime 0.000042s 
>>> [µs| 42s |] :: Integer 42000000 

ns :: QuasiQuoter Source #

A quasiquoter to denote a duration in nanoseconds. See s for detailed usage.

>>> [ns| 42 |] :: DiffTime 0.000000042s 
>>> [ns| 42s |] :: Integer 42000000000 

ps :: QuasiQuoter Source #

A quasiquoter to denote a duration in picoseconds. See s for detailed usage.

>>> [ps| 42 |] :: DiffTime 0.000000000042s 
>>> [ps| 42s |] :: Integer 42000000000000