-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEta-Classes-Monad.html
18 lines (18 loc) · 24 KB
/
Eta-Classes-Monad.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!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>Eta.Classes.Monad</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Eta-Classes-Monad.html");};
//]]>
</script></head><body class="no-frame"><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 empty"> </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">Eta.Classes.Monad</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>The <code><a href="Eta-Classes-Monad.html#t:Monad">Monad</a></code> type class defines that a type
can have an <code><a href="Eta-Classes-Monad.html#v:flatMap">flatMap</a></code> operation which can be used
to sequence actions over the same type.</p><p>All types that implement <code><a href="Eta-Classes-Monad.html#t:Monad">Monad</a></code> must implement
<code><a href="Eta-Classes-Applicative.html#t:Applicative">Applicative</a></code>.</p><p>The List, <code><a href="Eta-Types-Maybe.html#t:Maybe">Maybe</a></code>, and <code><a href="Eta-Types-IO.html#t:IO">IO</a></code> types are examples of
instances of <code><a href="Eta-Classes-Monad.html#t:Monad">Monad</a></code>.</p><pre class="screen"><code class="prompt">>>> </code><strong class="userinput"><code>flatMap (\x -> [1 .. x]) [1, 2, 3]
</code></strong>[1,1,2,1,2,3]
</pre><p><em>Mnemonic: Sequenceable</em></p></div></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="Eta-Classes-Applicative.html#t:Applicative">Applicative</a> m => <a href="#t:Monad">Monad</a> m <span class="keyword">where</span><ul class="subs"></ul></li><li class="src short"><a href="#v:flatMap">flatMap</a> :: <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> m => (a -> m b) -> m a -> m b</li><li class="src short"><a href="#v:-124--62--62-">(|>>)</a> :: <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> m => m a -> (a -> m b) -> m b</li><li class="src short"><a href="#v:-60--60--124-">(<<|)</a> :: <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> m => (a -> m b) -> m a -> m b</li><li class="src short"><a href="#v:-62--61--62-">(>=>)</a> :: <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> m => (a -> m b) -> (b -> m c) -> a -> m c</li><li class="src short"><a href="#v:-60--61--60-">(<=<)</a> :: <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> m => (b -> m c) -> (a -> m b) -> a -> m c</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">class</span> <a href="Eta-Classes-Applicative.html#t:Applicative">Applicative</a> m => <a id="t:Monad" class="def">Monad</a> m <span class="keyword">where</span> <a href="#t:Monad" class="selflink">#</a></p><div class="subs minimal"><p class="caption">Minimal complete definition</p><p class="src"><a href="Eta-Classes-Monad.html#v:-62--62--61-">(>>=)</a></p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a id="v:-62--62--61-" class="def">(>>=)</a> :: m a -> (a -> m b) -> m b <a href="#v:-62--62--61-" class="selflink">#</a></p></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 clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:1" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:1')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> []</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:1" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: [a] -> (a -> [b]) -> [b] <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: [a] -> [b] -> [b]</p><p class="src"><a href="#v:return">return</a> :: a -> [a]</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> [a]</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:2" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:2')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> <a href="Eta-Types-Maybe.html#t:Maybe">Maybe</a></span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:2" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: <a href="Eta-Types-Maybe.html#t:Maybe">Maybe</a> a -> (a -> <a href="Eta-Types-Maybe.html#t:Maybe">Maybe</a> b) -> <a href="Eta-Types-Maybe.html#t:Maybe">Maybe</a> b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: <a href="Eta-Types-Maybe.html#t:Maybe">Maybe</a> a -> <a href="Eta-Types-Maybe.html#t:Maybe">Maybe</a> b -> <a href="Eta-Types-Maybe.html#t:Maybe">Maybe</a> b</p><p class="src"><a href="#v:return">return</a> :: a -> <a href="Eta-Types-Maybe.html#t:Maybe">Maybe</a> a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> <a href="Eta-Types-Maybe.html#t:Maybe">Maybe</a> a</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:3" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:3')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> <a href="Eta-Types-IO.html#t:IO">IO</a></span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:3" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: <a href="Eta-Types-IO.html#t:IO">IO</a> a -> (a -> <a href="Eta-Types-IO.html#t:IO">IO</a> b) -> <a href="Eta-Types-IO.html#t:IO">IO</a> b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: <a href="Eta-Types-IO.html#t:IO">IO</a> a -> <a href="Eta-Types-IO.html#t:IO">IO</a> b -> <a href="Eta-Types-IO.html#t:IO">IO</a> b</p><p class="src"><a href="#v:return">return</a> :: a -> <a href="Eta-Types-IO.html#t:IO">IO</a> a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> <a href="Eta-Types-IO.html#t:IO">IO</a> a</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:4" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:4')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> U1</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:4" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: U1 a -> (a -> U1 b) -> U1 b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: U1 a -> U1 b -> U1 b</p><p class="src"><a href="#v:return">return</a> :: a -> U1 a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> U1 a</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:5" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:5')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> Par1</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:5" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: Par1 a -> (a -> Par1 b) -> Par1 b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: Par1 a -> Par1 b -> Par1 b</p><p class="src"><a href="#v:return">return</a> :: a -> Par1 a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> Par1 a</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:6" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:6')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> Sum</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:6" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: Sum a -> (a -> Sum b) -> Sum b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: Sum a -> Sum b -> Sum b</p><p class="src"><a href="#v:return">return</a> :: a -> Sum a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> Sum a</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:7" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:7')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> Product</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:7" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: Product a -> (a -> Product b) -> Product b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: Product a -> Product b -> Product b</p><p class="src"><a href="#v:return">return</a> :: a -> Product a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> Product a</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:8" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:8')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> Last</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:8" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: Last a -> (a -> Last b) -> Last b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: Last a -> Last b -> Last b</p><p class="src"><a href="#v:return">return</a> :: a -> Last a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> Last a</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:9" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:9')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> First</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:9" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: First a -> (a -> First b) -> First b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: First a -> First b -> First b</p><p class="src"><a href="#v:return">return</a> :: a -> First a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> First a</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:10" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:10')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> Dual</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:10" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: Dual a -> (a -> Dual b) -> Dual b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: Dual a -> Dual b -> Dual b</p><p class="src"><a href="#v:return">return</a> :: a -> Dual a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> Dual a</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:11" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:11')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> ((->) r)</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:11" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: (r -> a) -> (a -> r -> b) -> r -> b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: (r -> a) -> (r -> b) -> r -> b</p><p class="src"><a href="#v:return">return</a> :: a -> r -> a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> r -> a</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:12" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:12')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> (<a href="Eta-Types-Either.html#t:Either">Either</a> e)</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:12" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: <a href="Eta-Types-Either.html#t:Either">Either</a> e a -> (a -> <a href="Eta-Types-Either.html#t:Either">Either</a> e b) -> <a href="Eta-Types-Either.html#t:Either">Either</a> e b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: <a href="Eta-Types-Either.html#t:Either">Either</a> e a -> <a href="Eta-Types-Either.html#t:Either">Either</a> e b -> <a href="Eta-Types-Either.html#t:Either">Either</a> e b</p><p class="src"><a href="#v:return">return</a> :: a -> <a href="Eta-Types-Either.html#t:Either">Either</a> e a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> <a href="Eta-Types-Either.html#t:Either">Either</a> e a</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:13" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:13')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> f => <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> (Rec1 f)</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:13" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: Rec1 f a -> (a -> Rec1 f b) -> Rec1 f b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: Rec1 f a -> Rec1 f b -> Rec1 f b</p><p class="src"><a href="#v:return">return</a> :: a -> Rec1 f a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> Rec1 f a</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:14" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:14')"></span> <a href="Eta-Classes-Monoid.html#t:Monoid">Monoid</a> a => <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> ((,) a)</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:14" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: (a, a) -> (a -> (a, b)) -> (a, b) <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: (a, a) -> (a, b) -> (a, b)</p><p class="src"><a href="#v:return">return</a> :: a -> (a, a)</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> (a, a)</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:15" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:15')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> m => <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> (WrappedMonad m)</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:15" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: WrappedMonad m a -> (a -> WrappedMonad m b) -> WrappedMonad m b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: WrappedMonad m a -> WrappedMonad m b -> WrappedMonad m b</p><p class="src"><a href="#v:return">return</a> :: a -> WrappedMonad m a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> WrappedMonad m a</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:16" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:16')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> (Proxy *)</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:16" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: Proxy * a -> (a -> Proxy * b) -> Proxy * b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: Proxy * a -> Proxy * b -> Proxy * b</p><p class="src"><a href="#v:return">return</a> :: a -> Proxy * a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> Proxy * a</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:17" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:17')"></span> (<a href="Eta-Classes-Monad.html#t:Monad">Monad</a> f, <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> g) => <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> ((:*:) f g)</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:17" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: (f :*: g) a -> (a -> (f :*: g) b) -> (f :*: g) b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: (f :*: g) a -> (f :*: g) b -> (f :*: g) b</p><p class="src"><a href="#v:return">return</a> :: a -> (f :*: g) a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> (f :*: g) a</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:18" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:18')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> f => <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> (Alt * f)</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:18" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: Alt * f a -> (a -> Alt * f b) -> Alt * f b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: Alt * f a -> Alt * f b -> Alt * f b</p><p class="src"><a href="#v:return">return</a> :: a -> Alt * f a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> Alt * f a</p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:ic:Monad:Monad:19" class="instance expander" onclick="toggleSection('i:ic:Monad:Monad:19')"></span> <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> f => <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> (M1 i c f)</span></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div id="section.i:ic:Monad:Monad:19" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-62--62--61-">(>>=)</a> :: M1 i c f a -> (a -> M1 i c f b) -> M1 i c f b <a href="#v:-62--62--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62--62-">(>>)</a> :: M1 i c f a -> M1 i c f b -> M1 i c f b</p><p class="src"><a href="#v:return">return</a> :: a -> M1 i c f a</p><p class="src"><a href="#v:fail">fail</a> :: <a href="Eta-Types-String.html#t:String">String</a> -> M1 i c f a</p></div></div></td></tr></table></div></div></div><div class="top"><p class="src"><a id="v:flatMap" class="def">flatMap</a> :: <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> m => (a -> m b) -> m a -> m b <a href="#v:flatMap" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:-124--62--62-" class="def">(|>>)</a> :: <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> m => m a -> (a -> m b) -> m b <a href="#v:-124--62--62-" class="selflink">#</a></p><div class="doc"><p>Flatmaps the function of the right over the Monad of the left</p><pre>>> readFile "data.txt" |>> printLine
"This is some data stored in data.txt"
</pre></div></div><div class="top"><p class="src"><a id="v:-60--60--124-" class="def">(<<|)</a> :: <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> m => (a -> m b) -> m a -> m b <a href="#v:-60--60--124-" class="selflink">#</a></p><div class="doc"><p>Flatmaps the function of the left over the Monad of the left</p><pre>>> printLine <<| readFile "data.txt"
"This is some data stored in data.txt"
</pre></div></div><div class="doc"><p>Creates a new function that can be flatmapped by
composing two functions:</p><pre> >> readAndPrint = readFile >=> printLine
>> readAndPrint "data.txt"
"This is some data stored in data.txt"
</pre><p><em>Sometimes referred as Kleisli composition</em></p></div><div class="top"><p class="src"><a id="v:-62--61--62-" class="def">(>=>)</a> :: <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> m => (a -> m b) -> (b -> m c) -> a -> m c <a href="#v:-62--61--62-" class="selflink">#</a></p></div><div class="doc"><p>Inverted '(>=>)'</p></div><div class="top"><p class="src"><a id="v:-60--61--60-" class="def">(<=<)</a> :: <a href="Eta-Classes-Monad.html#t:Monad">Monad</a> m => (b -> m c) -> (a -> m b) -> a -> m c <a href="#v:-60--61--60-" class="selflink">#</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.4</p></div></body></html>