Skip to content

Commit c1cdd26

Browse files
committed
MonadTimeout: added ContT instance
1 parent 42a04ef commit c1cdd26

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

si-timers/src/Control/Monad/Class/MonadTimer/NonStandard.hs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import Control.Monad (when)
3030
#endif
3131
import Control.Monad.Class.MonadSTM
3232

33+
import Control.Monad.Cont (ContT (..))
3334
import Control.Monad.RWS (RWST (..))
3435
import Control.Monad.Reader (ReaderT (..))
3536
import Control.Monad.State (StateT (..))
@@ -172,6 +173,13 @@ instance MonadTimeout IO where
172173
-- Transformer's instances
173174
--
174175

176+
instance MonadTimeout m => MonadTimeout (ContT r m) where
177+
newtype Timeout (ContT r m) = TimeoutC { unTimeoutC :: Timeout m }
178+
newTimeout = lift . fmap TimeoutC . newTimeout
179+
readTimeout = WrappedSTM . readTimeout . unTimeoutC
180+
updateTimeout (TimeoutC t) d = lift $ updateTimeout t d
181+
cancelTimeout = lift . cancelTimeout . unTimeoutC
182+
175183
instance MonadTimeout m => MonadTimeout (ReaderT r m) where
176184
newtype Timeout (ReaderT r m) = TimeoutR { unTimeoutR :: Timeout m }
177185
newTimeout = lift . fmap TimeoutR . newTimeout

0 commit comments

Comments
 (0)