{-# OPTIONS_GHC -Wno-orphans #-} {-# OPTIONS_GHC -Wno-deprecations #-} module Control.Monad.Class.MonadST.Trans () where import Control.Monad.Cont (ContT) import Control.Monad.Except (ExceptT) import Control.Monad.RWS.Lazy qualified as Lazy import Control.Monad.RWS.Strict qualified as Strict import Control.Monad.State.Lazy qualified as Lazy import Control.Monad.State.Strict qualified as Strict import Control.Monad.Trans (lift) import Control.Monad.Writer.Lazy qualified as Lazy import Control.Monad.Writer.Strict qualified as Strict import Control.Monad.Class.MonadST instance MonadST m => MonadST (ContT r m) where stToIO :: forall a. ST (PrimState (ContT r m)) a -> ContT r m a stToIO = m a -> ContT r m a forall (m :: * -> *) a. Monad m => m a -> ContT r m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (m a -> ContT r m a) -> (ST (PrimState m) a -> m a) -> ST (PrimState m) a -> ContT r m a forall b c a. (b -> c) -> (a -> b) -> a -> c . ST (PrimState m) a -> m a forall a. ST (PrimState m) a -> m a forall (m :: * -> *) a. MonadST m => ST (PrimState m) a -> m a stToIO instance MonadST m => MonadST (ExceptT e m) where stToIO :: forall a. ST (PrimState (ExceptT e m)) a -> ExceptT e m a stToIO = m a -> ExceptT e m a forall (m :: * -> *) a. Monad m => m a -> ExceptT e m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (m a -> ExceptT e m a) -> (ST (PrimState m) a -> m a) -> ST (PrimState m) a -> ExceptT e m a forall b c a. (b -> c) -> (a -> b) -> a -> c . ST (PrimState m) a -> m a forall a. ST (PrimState m) a -> m a forall (m :: * -> *) a. MonadST m => ST (PrimState m) a -> m a stToIO instance (Monoid w, MonadST m) => MonadST (Lazy.RWST r w s m) where stToIO :: forall a. ST (PrimState (RWST r w s m)) a -> RWST r w s m a stToIO = m a -> RWST r w s m a forall (m :: * -> *) a. Monad m => m a -> RWST r w s m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (m a -> RWST r w s m a) -> (ST (PrimState m) a -> m a) -> ST (PrimState m) a -> RWST r w s m a forall b c a. (b -> c) -> (a -> b) -> a -> c . ST (PrimState m) a -> m a forall a. ST (PrimState m) a -> m a forall (m :: * -> *) a. MonadST m => ST (PrimState m) a -> m a stToIO instance (Monoid w, MonadST m) => MonadST (Strict.RWST r w s m) where stToIO :: forall a. ST (PrimState (RWST r w s m)) a -> RWST r w s m a stToIO = m a -> RWST r w s m a forall (m :: * -> *) a. Monad m => m a -> RWST r w s m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (m a -> RWST r w s m a) -> (ST (PrimState m) a -> m a) -> ST (PrimState m) a -> RWST r w s m a forall b c a. (b -> c) -> (a -> b) -> a -> c . ST (PrimState m) a -> m a forall a. ST (PrimState m) a -> m a forall (m :: * -> *) a. MonadST m => ST (PrimState m) a -> m a stToIO instance MonadST m => MonadST (Lazy.StateT s m) where stToIO :: forall a. ST (PrimState (StateT s m)) a -> StateT s m a stToIO = m a -> StateT s m a forall (m :: * -> *) a. Monad m => m a -> StateT s m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (m a -> StateT s m a) -> (ST (PrimState m) a -> m a) -> ST (PrimState m) a -> StateT s m a forall b c a. (b -> c) -> (a -> b) -> a -> c . ST (PrimState m) a -> m a forall a. ST (PrimState m) a -> m a forall (m :: * -> *) a. MonadST m => ST (PrimState m) a -> m a stToIO instance MonadST m => MonadST (Strict.StateT s m) where stToIO :: forall a. ST (PrimState (StateT s m)) a -> StateT s m a stToIO = m a -> StateT s m a forall (m :: * -> *) a. Monad m => m a -> StateT s m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (m a -> StateT s m a) -> (ST (PrimState m) a -> m a) -> ST (PrimState m) a -> StateT s m a forall b c a. (b -> c) -> (a -> b) -> a -> c . ST (PrimState m) a -> m a forall a. ST (PrimState m) a -> m a forall (m :: * -> *) a. MonadST m => ST (PrimState m) a -> m a stToIO instance (Monoid w, MonadST m) => MonadST (Lazy.WriterT w m) where stToIO :: forall a. ST (PrimState (WriterT w m)) a -> WriterT w m a stToIO = m a -> WriterT w m a forall (m :: * -> *) a. Monad m => m a -> WriterT w m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (m a -> WriterT w m a) -> (ST (PrimState m) a -> m a) -> ST (PrimState m) a -> WriterT w m a forall b c a. (b -> c) -> (a -> b) -> a -> c . ST (PrimState m) a -> m a forall a. ST (PrimState m) a -> m a forall (m :: * -> *) a. MonadST m => ST (PrimState m) a -> m a stToIO instance (Monoid w, MonadST m) => MonadST (Strict.WriterT w m) where stToIO :: forall a. ST (PrimState (WriterT w m)) a -> WriterT w m a stToIO = m a -> WriterT w m a forall (m :: * -> *) a. Monad m => m a -> WriterT w m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (m a -> WriterT w m a) -> (ST (PrimState m) a -> m a) -> ST (PrimState m) a -> WriterT w m a forall b c a. (b -> c) -> (a -> b) -> a -> c . ST (PrimState m) a -> m a forall a. ST (PrimState m) a -> m a forall (m :: * -> *) a. MonadST m => ST (PrimState m) a -> m a stToIO