Skip to content

Commit b52f920

Browse files
committed
si-timers: monad transformer instances for MonadMonotonicTime
1 parent d09bc0e commit b52f920

File tree

1 file changed

+29
-0
lines changed
  • si-timers/src/Control/Monad/Class/MonadTime

1 file changed

+29
-0
lines changed

si-timers/src/Control/Monad/Class/MonadTime/SI.hs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ module Control.Monad.Class.MonadTime.SI
1717
, NominalDiffTime
1818
) where
1919

20+
import Control.Monad.Cont
21+
import Control.Monad.Except
22+
import Control.Monad.RWS
23+
import Control.Monad.Reader
24+
import Control.Monad.State
25+
import Control.Monad.Writer
26+
2027
import Control.Monad.Class.MonadTime ( MonadMonotonicTimeNSec,
2128
MonadTime (..), NominalDiffTime, UTCTime, diffUTCTime,
2229
addUTCTime)
@@ -58,3 +65,25 @@ class MonadMonotonicTimeNSec m => MonadMonotonicTime m where
5865
conv = Time . Time.picosecondsToDiffTime . (* 1_000) . toInteger
5966

6067
instance MonadMonotonicTime IO where
68+
69+
--
70+
-- MTL instances
71+
--
72+
73+
instance MonadMonotonicTime m => MonadMonotonicTime (ContT r m) where
74+
getMonotonicTime = lift getMonotonicTime
75+
76+
instance MonadMonotonicTime m => MonadMonotonicTime (ReaderT r m) where
77+
getMonotonicTime = lift getMonotonicTime
78+
79+
instance (Monoid w, MonadMonotonicTime m) => MonadMonotonicTime (RWST r w s m) where
80+
getMonotonicTime = lift getMonotonicTime
81+
82+
instance MonadMonotonicTime m => MonadMonotonicTime (StateT s m) where
83+
getMonotonicTime = lift getMonotonicTime
84+
85+
instance (Monoid w, MonadMonotonicTime m) => MonadMonotonicTime (WriterT w m) where
86+
getMonotonicTime = lift getMonotonicTime
87+
88+
instance MonadMonotonicTime m => MonadMonotonicTime (ExceptT e m) where
89+
getMonotonicTime = lift getMonotonicTime

0 commit comments

Comments
 (0)