- <title>Japi</title>
- <itemizedlist>
- <listitem>
- <para>
- No change.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>monads</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number 2.0.1 (was 1.1).
- </para>
- </listitem>
- <listitem>
- <para>
- In <literal>Monad.Id</literal>, <literal>run</literal> has
- been renamed <literal>runId</literal>.
- </para>
- </listitem>
- <listitem>
- <para>
- The <literal>Monad.BackT</literal> module has been removed;
- use the new <literal>Monad.SearchT</literal> module instead.
- </para>
- </listitem>
- <listitem>
- <para>
- There is a new module <literal>Monad.ForEach</literal>
- containing a class <literal>ForEach</literal>, for
- applying a monadic function to each element in a container.
- It provides instances for <literal>[]</literal> and
- <literal>Maybe</literal>.
- </para>
- </listitem>
- <listitem>
- <para>
- The following combinators have been moved from
- <literal>Monad.Prelude</literal> to a new module
- <literal>Monad.Combinators</literal>:
- <literal>(@@)</literal>,
- <literal>(#)</literal>,
- <literal>(<#)</literal>,
- <literal>(<##)</literal>,
- <literal>concatMap</literal> and
- <literal>partitionM</literal>.
- <literal>Monad.Combinators</literal> also defines the
- following new combinators:
- <literal>ifM</literal>,
- <literal>whenM</literal>,
- <literal>andM</literal>,
- <literal>orM</literal>,
- <literal>allM</literal>,
- <literal>anyM</literal>,
- <literal>forEach2</literal>,
- <literal>forEach2_</literal>,
- <literal>forEach3</literal> and
- <literal>forEach3_</literal>, and re-exports
- <literal>Control.Monad</literal>.
- </para>
- </listitem>
- <listitem>
- <para>
- The modules
- <literal>Monad.Cont</literal>,
- <literal>Monad.Except</literal>,
- <literal>Monad.Reader</literal>,
- <literal>Monad.State</literal> and
- <literal>Monad.Writer</literal> have been removed, but their
- monad transformer counterparts remain. If you want the
- monads then just transform the identity monad instead.
- </para>
- </listitem>
- <listitem>
- <para>
- The <literal>Monad.ExceptT</literal> module now also exports
- runExceptWith and unsafeRunExcept. It also now defines an
- instance <literal>ContM (ExceptT x m)</literal>.
- </para>
- </listitem>
- <listitem>
- <para>
- In <literal>Monad.Prelude</literal>, the
- <literal>get</literal> method of the
- <literal>ReaderM</literal> module has been renamed
- <literal>getR</literal>. The <literal>local</literal> method
- has been removed with a new class
- <literal>ReadUpdM</literal>, with methods
- <literal>updateR</literal>
- and <literal>setR</literal>, taking its place.
- The <literal>letLocal</literal> function has also been removed.
- </para>
- </listitem>
- <listitem>
- <para>
- In <literal>Monad.Prelude</literal>,
- <literal>update</literal> has been made a method of
- <literal>StateM</literal>.
- The
- <literal>peek</literal> and <literal>poke</literal> methods
- have been renamed <literal>get</literal> and
- <literal>set</literal> respectively, and both have a default
- definition in terms of <literal>update</literal>.
- The <literal>poke_</literal> function has also been renamed
- <literal>set_</literal>.
- </para>
- </listitem>
- <listitem>
- <para>
- In <literal>Monad.Prelude</literal>,
- <literal>handle</literal> has been taken out of the
- <literal>ExceptM</literal> class and put into a new
- class <literal>HandlerM</literal> along with a new method
- <literal>checkExcept</literal>.
- There are also new functions <literal>withHandler</literal>
- and <literal>handle_</literal>.
- </para>
- </listitem>
- <listitem>
- <para>
- The <literal>TakeWriterM</literal> class has been renamed
- <literal>CollectorM</literal>, and rather than a single
- method <literal>takeFrom</literal> it has methods
- <literal>censor</literal> and <literal>collect</literal>
- with default definitions in terms of each other.
- </para>
- </listitem>
- <listitem>
- <para>
- <literal>Monad.Prelude</literal> defines a type
- <literal>Cont</literal> and functions
- <literal>returnCC</literal> and <literal>cJump</literal>.
- </para>
- </listitem>
- <listitem>
- <para>
- <literal>Monad.Prelude</literal> exports functions
- <literal>inReader</literal>,
- <literal>inWriter</literal>,
- <literal>inState</literal> and
- <literal>inExcept</literal>.
- These make it easy to turn a pure representation of an
- effectful computation into an actual computation.
- </para>
- </listitem>
- <listitem>
- <para>
- The <literal>zipWith3M</literal> and
- <literal>zipWith3M_</literal> functions have been removed
- from <literal>Monad.Prelude</literal>.
- </para>
- </listitem>
- <listitem>
- <para>
- <literal>Monad.Prelude</literal> now re-exports
- <literal>Monad.Combinators</literal> and
- <literal>Monad.ForEach</literal>, but no longer re-exports
- <literal>Monad</literal>.
- </para>
- </listitem>
- <listitem>
- <para>
- There is a new module <literal>Monad.Transformers</literal>
- which re-exports
- <literal>Monad.Id</literal>,
- <literal>Monad.ReaderT</literal>,
- <literal>Monad.WriterT</literal>,
- <literal>Monad.StateT</literal>,
- <literal>Monad.ExceptT</literal>,
- <literal>Monad.SearchT</literal> and
- <literal>Monad.ContT</literal>.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>