:: IO_a_ -> _ IO_ThreadId

Generalized version of evaluate.
Respond with 200 OK.
main = simpleHTTP nullConf $ ok "Everything is OK"
Respond with 204 No Content A 204 No Content response may not contain a message-body. If you try to supply one, it will be dutifully ignored.
main = simpleHTTP nullConf $ noContent "This will be ignored."
Respond with 500 Internal Server Error.
main = simpleHTTP nullConf $ internalServerError "Sorry, there was an internal server error."
Responds with 502 Bad Gateway.
main = simpleHTTP nullConf $ badGateway "Bad Gateway."
Respond with 400 Bad Request.
main = simpleHTTP nullConf $ badRequest "Bad Request."
Respond with 401 Unauthorized.
main = simpleHTTP nullConf $ unauthorized "You are not authorized."
Respond with 403 Forbidden.
main = simpleHTTP nullConf $ forbidden "Sorry, it is forbidden."
Respond with 404 Not Found.
main = simpleHTTP nullConf $ notFound "What you are looking for has not been found."
Respond with 413 Request Entity Too Large.
main = simpleHTTP nullConf $ requestEntityTooLarge "That's too big for me to handle."
A higher-order generalisation of replicate. For example
foo :: IO (String, String, String)
foo = replicateT getLine
> foo
Use sequenceT instead. It has a better name.
A higher-order generalisation of sequenceA. For example
> sequenceT (print 3110, putStrLn World) :: IO ((), ())
Throw an error, escaping the current computation up to the nearest catchError (if any).
Like throwEnvelopeErr but without providing a message.
>>> import Control.Monad.Except (runExcept)

>>> throwEnvelopeErr "BAD_ERROR" "a very bad error occurred!" :: Either (Err String) Int
Left (Err {errErr = "BAD_ERROR", errExtra = Just "a very bad error occurred!"})
Lift a value.
Apply the control pure over a data applicative.
Lift a value.
Inject a value into the monadic type.