{-# OPTIONS_GHC -Wno-orphans #-} {-# LANGUAGE TypeFamilies #-} module Control.Monad.Class.MonadUnique.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.Writer.Lazy qualified as Lazy import Control.Monad.Writer.Strict qualified as Strict import Control.Monad.Class.MonadUnique instance MonadUnique m => MonadUnique (ContT r m) where type Unique (ContT r m) = UniqueFor (ContT r) m instance MonadUnique m => MonadUnique (ExceptT e m) where type Unique (ExceptT e m) = UniqueFor (ExceptT e) m instance (MonadUnique m, Monoid w) => MonadUnique (Lazy.RWST r w s m) where type Unique (Lazy.RWST r w s m) = UniqueFor (Lazy.RWST r w s) m instance (MonadUnique m, Monoid w) => MonadUnique (Strict.RWST r w s m) where type Unique (Strict.RWST r w s m) = UniqueFor (Strict.RWST r w s) m instance MonadUnique m => MonadUnique (Lazy.StateT s m) where type Unique (Lazy.StateT s m) = UniqueFor (Lazy.StateT s) m instance MonadUnique m => MonadUnique (Strict.StateT s m) where type Unique (Strict.StateT s m) = UniqueFor (Strict.StateT s) m instance (MonadUnique m, Monoid w) => MonadUnique (Lazy.WriterT w m) where type Unique (Lazy.WriterT w m) = UniqueFor (Lazy.WriterT w) m instance (MonadUnique m, Monoid w) => MonadUnique (Strict.WriterT w m) where type Unique (Strict.WriterT w m) = UniqueFor (Strict.WriterT w) m