{-# OPTIONS_GHC -fno-warn-orphans #-} module Polysemy.Time.Orphans where import Data.Time (secondsToNominalDiffTime, nominalDiffTimeToSeconds, diffUTCTime, addUTCTime, NominalDiffTime, UTCTime) import Torsor (Additive(..), Torsor(..)) instance Additive NominalDiffTime where zero :: NominalDiffTime zero = 0 invert :: NominalDiffTime -> NominalDiffTime invert = Pico -> NominalDiffTime secondsToNominalDiffTime (Pico -> NominalDiffTime) -> (NominalDiffTime -> Pico) -> NominalDiffTime -> NominalDiffTime forall b c a. (b -> c) -> (a -> b) -> a -> c . Pico -> Pico forall a. Num a => a -> a negate (Pico -> Pico) -> (NominalDiffTime -> Pico) -> NominalDiffTime -> Pico forall b c a. (b -> c) -> (a -> b) -> a -> c . NominalDiffTime -> Pico nominalDiffTimeToSeconds plus :: NominalDiffTime -> NominalDiffTime -> NominalDiffTime plus = NominalDiffTime -> NominalDiffTime -> NominalDiffTime forall a. Num a => a -> a -> a (+) minus :: NominalDiffTime -> NominalDiffTime -> NominalDiffTime minus = (-) instance Torsor UTCTime NominalDiffTime where add :: NominalDiffTime -> UTCTime -> UTCTime add v :: NominalDiffTime v p :: UTCTime p = NominalDiffTime -> UTCTime -> UTCTime addUTCTime NominalDiffTime v UTCTime p difference :: UTCTime -> UTCTime -> NominalDiffTime difference = UTCTime -> UTCTime -> NominalDiffTime diffUTCTime