packages feed

om-time 0.3.0.5 → 0.3.1.0

raw patch · 2 files changed

+30/−3 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ OM.Time: data NowT (m :: Type -> Type) a
+ OM.Time: instance Control.Monad.Trans.Class.MonadTrans OM.Time.NowT
+ OM.Time: instance GHC.Internal.Base.Applicative m => GHC.Internal.Base.Applicative (OM.Time.NowT m)
+ OM.Time: instance GHC.Internal.Base.Functor m => GHC.Internal.Base.Functor (OM.Time.NowT m)
+ OM.Time: instance GHC.Internal.Base.Monad m => GHC.Internal.Base.Monad (OM.Time.NowT m)
+ OM.Time: instance GHC.Internal.Base.Monad m => OM.Time.MonadTimeSpec (OM.Time.NowT m)
+ OM.Time: runNowT :: TimeSpec -> NowT m a -> m a

Files

om-time.cabal view
@@ -1,6 +1,6 @@ cabal-version:       3.0 name:                om-time-version:             0.3.0.5+version:             0.3.1.0 synopsis:            Misc. time utilites description:         A monad interface for obtain the current TimeSpec, along                      with a few other utilities.
src/OM/Time.hs view
@@ -12,14 +12,22 @@   timed,   diffTimeSpec,   addTime,+  NowT,+  runNowT, ) where   import Control.Monad.Trans.Class (MonadTrans(lift))+import Control.Monad.Trans.Reader (ReaderT(ReaderT, runReaderT), ask) import Data.Aeson (FromJSON, FromJSONKey, ToJSON, ToJSONKey)-import Data.Binary (Binary, get, put)+import Data.Binary (Binary(get, put)) import Data.Int (Int64) import Data.Time (Day(ModifiedJulianDay), UTCTime(UTCTime), DiffTime)+import Prelude+  ( Applicative(pure), Fractional((/), fromRational), Monad(return)+  , Num((*), (+), (-)), Real(toRational), RealFrac(truncate), Show(showsPrec)+  , (.), Eq, Functor, IO, Ord, flip, realToFrac+  ) import System.Clock (TimeSpec) import qualified System.Clock as Clock @@ -32,7 +40,7 @@ instance Show Time where   showsPrec n = showsPrec n . unTime instance Binary Time where-  put (Time (UTCTime (ModifiedJulianDay day) tod)) = +  put (Time (UTCTime (ModifiedJulianDay day) tod)) =     put (day, toRational tod)   get = do     (day, tod) <- get@@ -92,5 +100,24 @@       Clock.sec = Clock.sec time + secDiff,       Clock.nsec = Clock.nsec time + nsecDiff     }+++{-| An instance of MonadTimeSpec where the time is always a constant value.  -}+newtype NowT m a = NowT+  { _unNowT :: ReaderT TimeSpec m a+  }+  deriving newtype+    ( Applicative+    , Functor+    , Monad+    , MonadTrans+    )+instance (Monad m) => MonadTimeSpec (NowT m) where+  getTime = NowT ask+++runNowT :: TimeSpec -> NowT m a -> m a+runNowT now (NowT action) =+  flip runReaderT now action