-- |
-- This module reexports most of the types from the \"transformers\" package.
-- Strict variants are provided instead of the lazy variants.
--
-- Both 'Data.Functor.Sum' and 'Data.Functor.Product' are left out because
-- the names of these data types clash with the commonly used newtypes
-- in 'Data.Monoid'.
module Prelude.Transformers.Strict.Types
  ( module E
  ) where

-- Applicatives
import Control.Applicative.Backwards as E (Backwards(..))
import Control.Applicative.Lift as E (Lift(..))

-- Typeclasses
import Control.Monad.IO.Class as E (MonadIO)
import Control.Monad.Trans.Class as E (MonadTrans)

-- Transformers
import Control.Monad.Trans.Cont as E (ContT(..))
import Control.Monad.Trans.Except as E (Except,ExceptT(..),runExceptT)
import Control.Monad.Trans.Identity as E (IdentityT(..))
import Control.Monad.Trans.Maybe as E (MaybeT(..))
import Control.Monad.Trans.RWS.Strict as E (RWS,RWST(..))
import Control.Monad.Trans.Reader as E (Reader,ReaderT(..))
import Control.Monad.Trans.State.Strict as E (State,StateT(..))
import Control.Monad.Trans.Writer.Strict as E (Writer,WriterT(..))

-- Functors
import Data.Functor.Classes as E (Eq1,Ord1,Read1,Show1)
import Data.Functor.Compose as E (Compose(..))
import Data.Functor.Constant as E (Constant(..))
import Data.Functor.Reverse as E (Reverse(..))