@@ -17,6 +17,13 @@ module Control.Monad.Class.MonadTime.SI
17
17
, NominalDiffTime
18
18
) where
19
19
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
+
20
27
import Control.Monad.Class.MonadTime ( MonadMonotonicTimeNSec ,
21
28
MonadTime (.. ), NominalDiffTime , UTCTime , diffUTCTime ,
22
29
addUTCTime )
@@ -58,3 +65,25 @@ class MonadMonotonicTimeNSec m => MonadMonotonicTime m where
58
65
conv = Time . Time. picosecondsToDiffTime . (* 1_000 ) . toInteger
59
66
60
67
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