module System.Clock.Primitive where open import Agda.Builtin.Nat open import IO.Primitive open import Foreign.Haskell data Clock : Set where Monotonic Realtime ProcessCPUTime : Clock ThreadCPUTime MonotonicRaw Boottime : Clock MonotonicCoarse RealtimeCoarse : Clock {-# COMPILE GHC Clock = data Clock (Monotonic | Realtime | ProcessCPUTime | ThreadCPUTime | MonotonicRaw | Boottime | MonotonicCoarse | RealtimeCoarse ) #-} postulate getTime : Clock → IO (Pair Nat Nat) {-# FOREIGN GHC import System.Clock #-} {-# FOREIGN GHC import Data.Function #-} {-# COMPILE GHC getTime = fmap (\ (TimeSpec a b) -> ((,) `on` fromIntegral) a b) . getTime #-}