module Control.Monad.Trans.Order.Lazy.Type (
OrderT (OrderT, runOrderT)
) where
import Control.Applicative
import Control.Monad
import Control.Monad.Fix
import Control.Monad.Trans.Class
import Control.Monad.IO.Class
import qualified Control.Monad.Trans.State.Lazy as Lazy
import Control.Monad.Trans.Order.Representation hiding (lift)
newtype OrderT o m a = OrderT {
runOrderT :: OrderTRep Lazy.StateT o m a
} deriving (
Functor,
Applicative,
Alternative,
Monad,
MonadPlus,
MonadFix,
MonadTrans,
MonadIO
)
instance StateMonadTrans Lazy.StateT where
stateT = Lazy.StateT
runStateT = Lazy.runStateT
fmap' = fmap
(<$!) = (<$)
pure' = pure
(<*>!) = (<*>)
(*>!) = (*>)
(<*!) = (<*)
empty' = empty
(<|>!) = (<|>)
some' = some
many' = many
(>>=!) = (>>=)
(>>!) = (>>)
return' = return
fail' = fail
mzero' = mzero
mplus' = mplus
mfix' = mfix
lift' = lift
liftIO' = liftIO