hxt-filter-8.3.0: doc/hxt-filter/Control-Monad-MonadStateIO.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
><TITLE
>Control.Monad.MonadStateIO</TITLE
><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"
></SCRIPT
></HEAD
><BODY
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="topbar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
></TD
><TD CLASS="title"
>hxt-filter-8.3.0: A collection of tools for processing XML with Haskell (Filter variant).</TD
><TD CLASS="topbut"
><A HREF="src/Control-Monad-MonadStateIO.html"
>Source code</A
></TD
><TD CLASS="topbut"
><A HREF="index.html"
>Contents</A
></TD
><TD CLASS="topbut"
><A HREF="doc-index.html"
>Index</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="modulebar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><FONT SIZE="6"
>Control.Monad.MonadStateIO</FONT
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Description</TD
></TR
><TR
><TD CLASS="doc"
><P
>general usefull state monad for a local state and IO
</P
><P
>This module is used for threading a state and io actions
through a computation.
Here the monad is constructed by hand.
It could easily be refactored with the use of the monad transformer library.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Synopsis</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>newtype</SPAN
> <A HREF="#t%3AStateIO"
>StateIO</A
> state res = <A HREF="#v%3ASTIO"
>STIO</A
> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="recfield"
><A HREF="#v%3Atrans"
>trans</A
> :: state -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"
>IO</A
> (res, state)</TD
></TR
></TABLE
>}</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aio"
>io</A
> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"
>IO</A
> a -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
>StateIO</A
> state a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AtrcState"
>trcState</A
> :: (state -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"
>String</A
>) -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
>StateIO</A
> state ()</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AchangeState"
>changeState</A
> :: (state -> state) -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
>StateIO</A
> state state</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetState"
>setState</A
> :: state -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
>StateIO</A
> state state</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AgetState"
>getState</A
> :: <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
>StateIO</A
> state state</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Arun"
>run</A
> :: state -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
>StateIO</A
> state res -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"
>IO</A
> res</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Documentation</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>newtype</SPAN
> <A NAME="t%3AStateIO"
></A
><B
>StateIO</B
> state res </TD
><TD CLASS="declbut"
><A HREF="src/Control-Monad-MonadStateIO.html#StateIO"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v%3ASTIO"
></A
><B
>STIO</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="body" COLSPAN="2"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v%3Atrans"
></A
><B
>trans</B
> :: state -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"
>IO</A
> (res, state)</TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:StateIO')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:StateIO" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="/usr/local/share/doc/ghc/libraries/base/Control-Monad.html#t%3AMonad"
>Monad</A
> (<A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
>StateIO</A
> state)</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v%3Aio"
></A
><B
>io</B
> :: <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"
>IO</A
> a -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
>StateIO</A
> state a</TD
><TD CLASS="declbut"
><A HREF="src/Control-Monad-MonadStateIO.html#io"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>lift IO command to <TT
><A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
>StateIO</A
></TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v%3AtrcState"
></A
><B
>trcState</B
> :: (state -> <A HREF="/usr/local/share/doc/ghc/libraries/base/Data-Char.html#t%3AString"
>String</A
>) -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
>StateIO</A
> state ()</TD
><TD CLASS="declbut"
><A HREF="src/Control-Monad-MonadStateIO.html#trcState"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>state inspection command: a "show"-like function is applied to the state
and the result is written to stderr.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v%3AchangeState"
></A
><B
>changeState</B
> :: (state -> state) -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
>StateIO</A
> state state</TD
><TD CLASS="declbut"
><A HREF="src/Control-Monad-MonadStateIO.html#changeState"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>change the state with a given function and return the new state
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v%3AsetState"
></A
><B
>setState</B
> :: state -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
>StateIO</A
> state state</TD
><TD CLASS="declbut"
><A HREF="src/Control-Monad-MonadStateIO.html#setState"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>set the state
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v%3AgetState"
></A
><B
>getState</B
> :: <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
>StateIO</A
> state state</TD
><TD CLASS="declbut"
><A HREF="src/Control-Monad-MonadStateIO.html#getState"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>read the state
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v%3Arun"
></A
><B
>run</B
> :: state -> <A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
>StateIO</A
> state res -> <A HREF="/usr/local/share/doc/ghc/libraries/base/System-IO.html#t%3AIO"
>IO</A
> res</TD
><TD CLASS="declbut"
><A HREF="src/Control-Monad-MonadStateIO.html#run"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>run a <TT
><A HREF="Control-Monad-MonadStateIO.html#t%3AStateIO"
>StateIO</A
></TT
> command with an initial state
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="botbar"
>Produced by <A HREF="http://www.haskell.org/haddock/"
>Haddock</A
> version 2.3.0</TD
></TR
></TABLE
></BODY
></HTML
>