-- |
-- 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(..))
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)