WashNGo-2.12: WASH/CGI/TCGI.hs
-- © 2006 Peter Thiemann
{- | Wrapper for the WASH.CGI.CGI monad type. Internal use only. Intended for
-- wrapping transactions.
-}
module WASH.CGI.TCGI where
import WASH.CGI.CGIMonad
-- |Type of a 'CGI' action in a transactional scope with a result variable of
-- type @a@.
newtype TCGI b a =
TCGI { unTCGI :: CGIAction a }
outof :: TCGI b a -> CGI a
outof = CGI . unTCGI
into :: CGI a -> TCGI b a
into = TCGI . unCGI
instance Monad (TCGI b) where
return x =
into (return x)
m >>= f =
into (outof m >>= (outof . f))
instance CGIMonad (TCGI b) where
wrapCGI = TCGI
unwrapCGI = unTCGI
chooser x y = return y