Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-release > by-pkgid > 6e204a966e8c42d976f99a1700ce5f20 > files > 3843

ghc-7.4.2-4.mga5.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Monad</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Monad.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">haskell98-2.0.0.1: Compatibility with Haskell 98</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>Safe</td></tr></table><p class="caption">Monad</p></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">class</span> <a href="Monad.html#t:Monad">Monad</a> m =&gt; <a href="#t:MonadPlus">MonadPlus</a> m  <span class="keyword">where</span><ul class="subs"><li><a href="#v:mzero">mzero</a> ::  m a</li><li><a href="#v:mplus">mplus</a> ::  m a -&gt; m a -&gt; m a</li></ul></li><li class="src short"><a href="#v:join">join</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; m (m a) -&gt; m a</li><li class="src short"><a href="#v:guard">guard</a> :: <a href="Monad.html#t:MonadPlus">MonadPlus</a> m =&gt; <a href="Prelude.html#t:Bool">Bool</a> -&gt; m ()</li><li class="src short"><a href="#v:when">when</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; <a href="Prelude.html#t:Bool">Bool</a> -&gt; m () -&gt; m ()</li><li class="src short"><a href="#v:unless">unless</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; <a href="Prelude.html#t:Bool">Bool</a> -&gt; m () -&gt; m ()</li><li class="src short"><a href="#v:ap">ap</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; m (a -&gt; b) -&gt; m a -&gt; m b</li><li class="src short"><a href="#v:msum">msum</a> :: <a href="Monad.html#t:MonadPlus">MonadPlus</a> m =&gt; [m a] -&gt; m a</li><li class="src short"><a href="#v:filterM">filterM</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a -&gt; m <a href="Prelude.html#t:Bool">Bool</a>) -&gt; [a] -&gt; m [a]</li><li class="src short"><a href="#v:mapAndUnzipM">mapAndUnzipM</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a -&gt; m (b, c)) -&gt; [a] -&gt; m ([b], [c])</li><li class="src short"><a href="#v:zipWithM">zipWithM</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a -&gt; b -&gt; m c) -&gt; [a] -&gt; [b] -&gt; m [c]</li><li class="src short"><a href="#v:zipWithM_">zipWithM_</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a -&gt; b -&gt; m c) -&gt; [a] -&gt; [b] -&gt; m ()</li><li class="src short"><a href="#v:foldM">foldM</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a -&gt; b -&gt; m a) -&gt; a -&gt; [b] -&gt; m a</li><li class="src short"><a href="#v:liftM">liftM</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a1 -&gt; r) -&gt; m a1 -&gt; m r</li><li class="src short"><a href="#v:liftM2">liftM2</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a1 -&gt; a2 -&gt; r) -&gt; m a1 -&gt; m a2 -&gt; m r</li><li class="src short"><a href="#v:liftM3">liftM3</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a1 -&gt; a2 -&gt; a3 -&gt; r) -&gt; m a1 -&gt; m a2 -&gt; m a3 -&gt; m r</li><li class="src short"><a href="#v:liftM4">liftM4</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a1 -&gt; a2 -&gt; a3 -&gt; a4 -&gt; r) -&gt; m a1 -&gt; m a2 -&gt; m a3 -&gt; m a4 -&gt; m r</li><li class="src short"><a href="#v:liftM5">liftM5</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a1 -&gt; a2 -&gt; a3 -&gt; a4 -&gt; a5 -&gt; r) -&gt; m a1 -&gt; m a2 -&gt; m a3 -&gt; m a4 -&gt; m a5 -&gt; m r</li><li class="src short"><span class="keyword">class</span>  <a href="#t:Monad">Monad</a> m  <span class="keyword">where</span><ul class="subs"><li><a href="#v:-62--62--61-">(&gt;&gt;=)</a> ::  m a -&gt; (a -&gt; m b) -&gt; m b</li><li><a href="#v:-62--62-">(&gt;&gt;)</a> ::  m a -&gt; m b -&gt; m b</li><li><a href="#v:return">return</a> ::  a -&gt; m a</li><li><a href="#v:fail">fail</a> ::  <a href="Prelude.html#t:String">String</a> -&gt; m a</li></ul></li><li class="src short"><span class="keyword">class</span>  <a href="#t:Functor">Functor</a> f  <span class="keyword">where</span><ul class="subs"><li><a href="#v:fmap">fmap</a> ::  (a -&gt; b) -&gt; f a -&gt; f b</li></ul></li><li class="src short"><a href="#v:mapM">mapM</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a -&gt; m b) -&gt; [a] -&gt; m [b]</li><li class="src short"><a href="#v:mapM_">mapM_</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a -&gt; m b) -&gt; [a] -&gt; m ()</li><li class="src short"><a href="#v:sequence">sequence</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; [m a] -&gt; m [a]</li><li class="src short"><a href="#v:sequence_">sequence_</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; [m a] -&gt; m ()</li><li class="src short"><a href="#v:-61--60--60-">(=&lt;&lt;)</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a -&gt; m b) -&gt; m a -&gt; m b</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">class</span> <a href="Monad.html#t:Monad">Monad</a> m =&gt; <a name="t:MonadPlus" class="def">MonadPlus</a> m  <span class="keyword">where</span><a href="../base-4.5.1.0/src/Control-Monad.html#MonadPlus" class="link">Source</a></p><div class="doc"><p>Monads that also support choice and failure.
</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:mzero" class="def">mzero</a> ::  m a<a href="../base-4.5.1.0/src/Control-Monad.html#mzero" class="link">Source</a></p><div class="doc"><p>the identity of <code><a href="Monad.html#v:mplus">mplus</a></code>.  It should also satisfy the equations
</p><pre> mzero &gt;&gt;= f  =  mzero
 v &gt;&gt; mzero   =  mzero
</pre></div><p class="src"><a name="v:mplus" class="def">mplus</a> ::  m a -&gt; m a -&gt; m a<a href="../base-4.5.1.0/src/Control-Monad.html#mplus" class="link">Source</a></p><div class="doc"><p>an associative operation
</p></div></div><div class="subs instances"><p id="control.i:MonadPlus" class="caption collapser" onclick="toggleSection('i:MonadPlus')">Instances</p><div id="section.i:MonadPlus" class="show"><table><tr><td class="src"><a href="Monad.html#t:MonadPlus">MonadPlus</a> []</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Monad.html#t:MonadPlus">MonadPlus</a> P</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Monad.html#t:MonadPlus">MonadPlus</a> <a href="../base-4.5.1.0/Text-ParserCombinators-ReadPrec.html#t:ReadPrec">ReadPrec</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Monad.html#t:MonadPlus">MonadPlus</a> <a href="../base-4.5.1.0/Text-ParserCombinators-ReadP.html#t:ReadP">ReadP</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Monad.html#t:MonadPlus">MonadPlus</a> <a href="Prelude.html#t:Maybe">Maybe</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:join" class="def">join</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; m (m a) -&gt; m a<a href="../base-4.5.1.0/src/Control-Monad.html#join" class="link">Source</a></p><div class="doc"><p>The <code><a href="Monad.html#v:join">join</a></code> function is the conventional monad join operator. It is used to
 remove one level of monadic structure, projecting its bound argument into the
 outer level.
</p></div></div><div class="top"><p class="src"><a name="v:guard" class="def">guard</a> :: <a href="Monad.html#t:MonadPlus">MonadPlus</a> m =&gt; <a href="Prelude.html#t:Bool">Bool</a> -&gt; m ()<a href="../base-4.5.1.0/src/Control-Monad.html#guard" class="link">Source</a></p><div class="doc"><p><code><code><a href="Monad.html#v:guard">guard</a></code> b</code> is <code><code><a href="Monad.html#v:return">return</a></code> ()</code> if <code>b</code> is <code><a href="Prelude.html#v:True">True</a></code>,
 and <code><a href="Monad.html#v:mzero">mzero</a></code> if <code>b</code> is <code><a href="Prelude.html#v:False">False</a></code>.
</p></div></div><div class="top"><p class="src"><a name="v:when" class="def">when</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; <a href="Prelude.html#t:Bool">Bool</a> -&gt; m () -&gt; m ()<a href="../base-4.5.1.0/src/Control-Monad.html#when" class="link">Source</a></p><div class="doc"><p>Conditional execution of monadic expressions. For example, 
</p><pre>       when debug (putStr &quot;Debugging\n&quot;)
</pre><p>will output the string <code>Debugging\n</code> if the Boolean value <code>debug</code> is <code><a href="Prelude.html#v:True">True</a></code>,
and otherwise do nothing.
</p></div></div><div class="top"><p class="src"><a name="v:unless" class="def">unless</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; <a href="Prelude.html#t:Bool">Bool</a> -&gt; m () -&gt; m ()<a href="../base-4.5.1.0/src/Control-Monad.html#unless" class="link">Source</a></p><div class="doc"><p>The reverse of <code><a href="Monad.html#v:when">when</a></code>.
</p></div></div><div class="top"><p class="src"><a name="v:ap" class="def">ap</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; m (a -&gt; b) -&gt; m a -&gt; m b<a href="../base-4.5.1.0/src/Control-Monad.html#ap" class="link">Source</a></p><div class="doc"><p>In many situations, the <code><a href="Monad.html#v:liftM">liftM</a></code> operations can be replaced by uses of
<code><a href="Monad.html#v:ap">ap</a></code>, which promotes function application. 
</p><pre>       return f `ap` x1 `ap` ... `ap` xn
</pre><p>is equivalent to 
</p><pre>       liftMn f x1 x2 ... xn
</pre></div></div><div class="top"><p class="src"><a name="v:msum" class="def">msum</a> :: <a href="Monad.html#t:MonadPlus">MonadPlus</a> m =&gt; [m a] -&gt; m a<a href="../base-4.5.1.0/src/Control-Monad.html#msum" class="link">Source</a></p><div class="doc"><p>This generalizes the list-based <code><a href="Prelude.html#v:concat">concat</a></code> function.
</p></div></div><div class="top"><p class="src"><a name="v:filterM" class="def">filterM</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a -&gt; m <a href="Prelude.html#t:Bool">Bool</a>) -&gt; [a] -&gt; m [a]<a href="../base-4.5.1.0/src/Control-Monad.html#filterM" class="link">Source</a></p><div class="doc"><p>This generalizes the list-based <code><a href="Prelude.html#v:filter">filter</a></code> function.
</p></div></div><div class="top"><p class="src"><a name="v:mapAndUnzipM" class="def">mapAndUnzipM</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a -&gt; m (b, c)) -&gt; [a] -&gt; m ([b], [c])<a href="../base-4.5.1.0/src/Control-Monad.html#mapAndUnzipM" class="link">Source</a></p><div class="doc"><p>The <code><a href="Monad.html#v:mapAndUnzipM">mapAndUnzipM</a></code> function maps its first argument over a list, returning
 the result as a pair of lists. This function is mainly used with complicated
 data structures or a state-transforming monad.
</p></div></div><div class="top"><p class="src"><a name="v:zipWithM" class="def">zipWithM</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a -&gt; b -&gt; m c) -&gt; [a] -&gt; [b] -&gt; m [c]<a href="../base-4.5.1.0/src/Control-Monad.html#zipWithM" class="link">Source</a></p><div class="doc"><p>The <code><a href="Monad.html#v:zipWithM">zipWithM</a></code> function generalizes <code><a href="Prelude.html#v:zipWith">zipWith</a></code> to arbitrary monads.
</p></div></div><div class="top"><p class="src"><a name="v:zipWithM_" class="def">zipWithM_</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a -&gt; b -&gt; m c) -&gt; [a] -&gt; [b] -&gt; m ()<a href="../base-4.5.1.0/src/Control-Monad.html#zipWithM_" class="link">Source</a></p><div class="doc"><p><code><a href="Monad.html#v:zipWithM_">zipWithM_</a></code> is the extension of <code><a href="Monad.html#v:zipWithM">zipWithM</a></code> which ignores the final result.
</p></div></div><div class="top"><p class="src"><a name="v:foldM" class="def">foldM</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a -&gt; b -&gt; m a) -&gt; a -&gt; [b] -&gt; m a<a href="../base-4.5.1.0/src/Control-Monad.html#foldM" class="link">Source</a></p><div class="doc"><p>The <code><a href="Monad.html#v:foldM">foldM</a></code> function is analogous to <code><a href="Prelude.html#v:foldl">foldl</a></code>, except that its result is
encapsulated in a monad. Note that <code><a href="Monad.html#v:foldM">foldM</a></code> works from left-to-right over
the list arguments. This could be an issue where <code>(<code><a href="Monad.html#v:-62--62-">&gt;&gt;</a></code>)</code> and the `folded
function' are not commutative.
</p><pre>       foldM f a1 [x1, x2, ..., xm]
</pre><p>==  
</p><pre>       do
         a2 &lt;- f a1 x1
         a3 &lt;- f a2 x2
         ...
         f am xm
</pre><p>If right-to-left evaluation is required, the input list should be reversed.
</p></div></div><div class="top"><p class="src"><a name="v:liftM" class="def">liftM</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a1 -&gt; r) -&gt; m a1 -&gt; m r<a href="../base-4.5.1.0/src/Control-Monad.html#liftM" class="link">Source</a></p><div class="doc"><p>Promote a function to a monad.
</p></div></div><div class="top"><p class="src"><a name="v:liftM2" class="def">liftM2</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a1 -&gt; a2 -&gt; r) -&gt; m a1 -&gt; m a2 -&gt; m r<a href="../base-4.5.1.0/src/Control-Monad.html#liftM2" class="link">Source</a></p><div class="doc"><p>Promote a function to a monad, scanning the monadic arguments from
 left to right.  For example,
</p><pre>    liftM2 (+) [0,1] [0,2] = [0,2,1,3]
    liftM2 (+) (Just 1) Nothing = Nothing
</pre></div></div><div class="top"><p class="src"><a name="v:liftM3" class="def">liftM3</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a1 -&gt; a2 -&gt; a3 -&gt; r) -&gt; m a1 -&gt; m a2 -&gt; m a3 -&gt; m r<a href="../base-4.5.1.0/src/Control-Monad.html#liftM3" class="link">Source</a></p><div class="doc"><p>Promote a function to a monad, scanning the monadic arguments from
 left to right (cf. <code><a href="Monad.html#v:liftM2">liftM2</a></code>).
</p></div></div><div class="top"><p class="src"><a name="v:liftM4" class="def">liftM4</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a1 -&gt; a2 -&gt; a3 -&gt; a4 -&gt; r) -&gt; m a1 -&gt; m a2 -&gt; m a3 -&gt; m a4 -&gt; m r<a href="../base-4.5.1.0/src/Control-Monad.html#liftM4" class="link">Source</a></p><div class="doc"><p>Promote a function to a monad, scanning the monadic arguments from
 left to right (cf. <code><a href="Monad.html#v:liftM2">liftM2</a></code>).
</p></div></div><div class="top"><p class="src"><a name="v:liftM5" class="def">liftM5</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a1 -&gt; a2 -&gt; a3 -&gt; a4 -&gt; a5 -&gt; r) -&gt; m a1 -&gt; m a2 -&gt; m a3 -&gt; m a4 -&gt; m a5 -&gt; m r<a href="../base-4.5.1.0/src/Control-Monad.html#liftM5" class="link">Source</a></p><div class="doc"><p>Promote a function to a monad, scanning the monadic arguments from
 left to right (cf. <code><a href="Monad.html#v:liftM2">liftM2</a></code>).
</p></div></div><div class="top"><p class="src"><span class="keyword">class</span>  <a name="t:Monad" class="def">Monad</a> m  <span class="keyword">where</span><a href="../base-4.5.1.0/src/GHC-Base.html#Monad" class="link">Source</a></p><div class="doc"><p>The <code><a href="Monad.html#t:Monad">Monad</a></code> class defines the basic operations over a <em>monad</em>,
a concept from a branch of mathematics known as <em>category theory</em>.
From the perspective of a Haskell programmer, however, it is best to
think of a monad as an <em>abstract datatype</em> of actions.
Haskell's <code>do</code> expressions provide a convenient syntax for writing
monadic expressions.
</p><p>Minimal complete definition: <code><a href="Monad.html#v:-62--62--61-">&gt;&gt;=</a></code> and <code><a href="Monad.html#v:return">return</a></code>.
</p><p>Instances of <code><a href="Monad.html#t:Monad">Monad</a></code> should satisfy the following laws:
</p><pre> return a &gt;&gt;= k  ==  k a
 m &gt;&gt;= return  ==  m
 m &gt;&gt;= (\x -&gt; k x &gt;&gt;= h)  ==  (m &gt;&gt;= k) &gt;&gt;= h
</pre><p>Instances of both <code><a href="Monad.html#t:Monad">Monad</a></code> and <code><a href="Monad.html#t:Functor">Functor</a></code> should additionally satisfy the law:
</p><pre> fmap f xs  ==  xs &gt;&gt;= return . f
</pre><p>The instances of <code><a href="Monad.html#t:Monad">Monad</a></code> for lists, <code><a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a></code> and <code><a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a></code>
defined in the <a href="../base-4.5.1.0/Prelude.html">Prelude</a> satisfy these laws.
</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:-62--62--61-" class="def">(&gt;&gt;=)</a> ::  m a -&gt; (a -&gt; m b) -&gt; m b<a href="../base-4.5.1.0/src/GHC-Base.html#%3E%3E%3D" class="link">Source</a></p><div class="doc"><p>Sequentially compose two actions, passing any value produced
 by the first as an argument to the second.
</p></div><p class="src"><a name="v:-62--62-" class="def">(&gt;&gt;)</a> ::  m a -&gt; m b -&gt; m b<a href="../base-4.5.1.0/src/GHC-Base.html#%3E%3E" class="link">Source</a></p><div class="doc"><p>Sequentially compose two actions, discarding any value produced
 by the first, like sequencing operators (such as the semicolon)
 in imperative languages.
</p></div><p class="src"><a name="v:return" class="def">return</a> ::  a -&gt; m a<a href="../base-4.5.1.0/src/GHC-Base.html#return" class="link">Source</a></p><div class="doc"><p>Inject a value into the monadic type.
</p></div><p class="src"><a name="v:fail" class="def">fail</a> ::  <a href="Prelude.html#t:String">String</a> -&gt; m a<a href="../base-4.5.1.0/src/GHC-Base.html#fail" class="link">Source</a></p><div class="doc"><p>Fail with a message.  This operation is not part of the
 mathematical definition of a monad, but is invoked on pattern-match
 failure in a <code>do</code> expression.
</p></div></div><div class="subs instances"><p id="control.i:Monad" class="caption collapser" onclick="toggleSection('i:Monad')">Instances</p><div id="section.i:Monad" class="show"><table><tr><td class="src"><a href="Monad.html#t:Monad">Monad</a> []</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Monad.html#t:Monad">Monad</a> <a href="Prelude.html#t:IO">IO</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Monad.html#t:Monad">Monad</a> P</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Monad.html#t:Monad">Monad</a> <a href="../base-4.5.1.0/Text-ParserCombinators-ReadPrec.html#t:ReadPrec">ReadPrec</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Monad.html#t:Monad">Monad</a> <a href="../base-4.5.1.0/Text-ParserCombinators-ReadP.html#t:ReadP">ReadP</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Monad.html#t:Monad">Monad</a> <a href="Prelude.html#t:Maybe">Maybe</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">class</span>  <a name="t:Functor" class="def">Functor</a> f  <span class="keyword">where</span><a href="../base-4.5.1.0/src/GHC-Base.html#Functor" class="link">Source</a></p><div class="doc"><p>The <code><a href="Monad.html#t:Functor">Functor</a></code> class is used for types that can be mapped over.
Instances of <code><a href="Monad.html#t:Functor">Functor</a></code> should satisfy the following laws:
</p><pre> fmap id  ==  id
 fmap (f . g)  ==  fmap f . fmap g
</pre><p>The instances of <code><a href="Monad.html#t:Functor">Functor</a></code> for lists, <code><a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a></code> and <code><a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a></code>
satisfy these laws.
</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:fmap" class="def">fmap</a> ::  (a -&gt; b) -&gt; f a -&gt; f b<a href="../base-4.5.1.0/src/GHC-Base.html#fmap" class="link">Source</a></p></div><div class="subs instances"><p id="control.i:Functor" class="caption collapser" onclick="toggleSection('i:Functor')">Instances</p><div id="section.i:Functor" class="show"><table><tr><td class="src"><a href="Monad.html#t:Functor">Functor</a> []</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Monad.html#t:Functor">Functor</a> <a href="Prelude.html#t:IO">IO</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Monad.html#t:Functor">Functor</a> <a href="../base-4.5.1.0/Text-ParserCombinators-ReadPrec.html#t:ReadPrec">ReadPrec</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Monad.html#t:Functor">Functor</a> <a href="../base-4.5.1.0/Text-ParserCombinators-ReadP.html#t:ReadP">ReadP</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Monad.html#t:Functor">Functor</a> <a href="Prelude.html#t:Maybe">Maybe</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Ix.html#t:Ix">Ix</a> i =&gt; <a href="Monad.html#t:Functor">Functor</a> (<a href="Array.html#t:Array">Array</a> i)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:mapM" class="def">mapM</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a -&gt; m b) -&gt; [a] -&gt; m [b]<a href="../base-4.5.1.0/src/Control-Monad.html#mapM" class="link">Source</a></p><div class="doc"><p><code><code><a href="Monad.html#v:mapM">mapM</a></code> f</code> is equivalent to <code><code><a href="Monad.html#v:sequence">sequence</a></code> . <code><a href="Prelude.html#v:map">map</a></code> f</code>.
</p></div></div><div class="top"><p class="src"><a name="v:mapM_" class="def">mapM_</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a -&gt; m b) -&gt; [a] -&gt; m ()<a href="../base-4.5.1.0/src/Control-Monad.html#mapM_" class="link">Source</a></p><div class="doc"><p><code><code><a href="Monad.html#v:mapM_">mapM_</a></code> f</code> is equivalent to <code><code><a href="Monad.html#v:sequence_">sequence_</a></code> . <code><a href="Prelude.html#v:map">map</a></code> f</code>.
</p></div></div><div class="top"><p class="src"><a name="v:sequence" class="def">sequence</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; [m a] -&gt; m [a]<a href="../base-4.5.1.0/src/Control-Monad.html#sequence" class="link">Source</a></p><div class="doc"><p>Evaluate each action in the sequence from left to right,
 and collect the results.
</p></div></div><div class="top"><p class="src"><a name="v:sequence_" class="def">sequence_</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; [m a] -&gt; m ()<a href="../base-4.5.1.0/src/Control-Monad.html#sequence_" class="link">Source</a></p><div class="doc"><p>Evaluate each action in the sequence from left to right,
 and ignore the results.
</p></div></div><div class="top"><p class="src"><a name="v:-61--60--60-" class="def">(=&lt;&lt;)</a> :: <a href="Monad.html#t:Monad">Monad</a> m =&gt; (a -&gt; m b) -&gt; m a -&gt; m b<a href="../base-4.5.1.0/src/Control-Monad.html#%3D%3C%3C" class="link">Source</a></p><div class="doc"><p>Same as <code><a href="Monad.html#v:-62--62--61-">&gt;&gt;=</a></code>, but with the arguments interchanged.
</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.11.0</p></div></body></html>