Portability | requires undecidable and overlapping instances, and forall in datatypes |
---|---|
Stability | experimental |
Maintainer | Niklas Broberg, nibro@cs.chalmers.se |
Safe Haskell | None |
HSP.Monad
Description
Datatypes and type classes comprising the basic model behind the scenes of Haskell Server Pages tags.
- type HSP = HSPT IO
- type HSPT m = XMLGenT (HSPT' m)
- type HSPT' m = RWST HSPEnv () (Maybe XMLMetaData) m
- runHSP :: Maybe XMLMetaData -> HSP a -> HSPEnv -> IO (Maybe XMLMetaData, a)
- evalHSP :: Maybe XMLMetaData -> HSP a -> IO (Maybe XMLMetaData, a)
- runHSPT :: Monad m => Maybe XMLMetaData -> HSPT m a -> HSPEnv -> m (Maybe XMLMetaData, a)
- evalHSPT :: MonadIO m => Maybe XMLMetaData -> HSPT m a -> m (Maybe XMLMetaData, a)
- getEnv :: HSP HSPEnv
- unsafeRunHSP :: HSP a -> IO (Maybe XMLMetaData, a)
- getParam :: String -> HSP (Maybe String)
- getIncNumber :: HSP Int
- doIO :: IO a -> HSP a
- catch :: HSP a -> (Exception -> HSP a) -> HSP a
- setMetaData :: Monad m => Maybe XMLMetaData -> HSPT m ()
- withMetaData :: Monad m => Maybe XMLMetaData -> HSPT m a -> HSPT m a
The HSP
Monad
The HSP monad is a reader wrapper around the IO monad, but extended with an XMLGenerator wrapper. type HSP' = ReaderT HSPEnv IO type HSP = XMLGenT HSP'
runHSP :: Maybe XMLMetaData -> HSP a -> HSPEnv -> IO (Maybe XMLMetaData, a)Source
Runs a HSP computation in a particular environment. Since HSP wraps the IO monad, the result of running it will be an IO computation.
evalHSP :: Maybe XMLMetaData -> HSP a -> IO (Maybe XMLMetaData, a)Source
runHSPT :: Monad m => Maybe XMLMetaData -> HSPT m a -> HSPEnv -> m (Maybe XMLMetaData, a)Source
evalHSPT :: MonadIO m => Maybe XMLMetaData -> HSPT m a -> m (Maybe XMLMetaData, a)Source
unsafeRunHSP :: HSP a -> IO (Maybe XMLMetaData, a)Source
Runs a HSP computation without an environment. Will work if the page in question does not touch the environment. Not sure about the usefulness at this stage though...
Functions
setMetaData :: Monad m => Maybe XMLMetaData -> HSPT m ()Source
withMetaData :: Monad m => Maybe XMLMetaData -> HSPT m a -> HSPT m aSource