This file is indexed.

/usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html is in libghc-comonad-doc 4.2.7.2-3build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<!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>Control.Comonad</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_Control-Comonad.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Control-Comonad.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">comonad-4.2.7.2: Comonads</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Copyright</th><td>(C) 2008-2015 Edward Kmett,
                (C) 2004 Dave Menendez</td></tr><tr><th>License</th><td>BSD-style (see the file LICENSE)</td></tr><tr><th>Maintainer</th><td>Edward Kmett &lt;ekmett@gmail.com&gt;</td></tr><tr><th>Stability</th><td>provisional</td></tr><tr><th>Portability</th><td>portable</td></tr><tr><th>Safe Haskell</th><td>Safe</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Control.Comonad</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Comonads</a></li><li><a href="#g:2">Combining Comonads</a></li><li><a href="#g:3">Cokleisli Arrows</a></li><li><a href="#g:4">Functors</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc empty">&nbsp;</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="Control-Comonad.html#t:Functor">Functor</a> w =&gt; <a href="#t:Comonad">Comonad</a> w <span class="keyword">where</span><ul class="subs"><li><a href="#v:extract">extract</a> :: w a -&gt; a</li><li><a href="#v:duplicate">duplicate</a> :: w a -&gt; w (w a)</li><li><a href="#v:extend">extend</a> :: (w a -&gt; b) -&gt; w a -&gt; w b</li></ul></li><li class="src short"><a href="#v:liftW">liftW</a> :: <a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; (a -&gt; b) -&gt; w a -&gt; w b</li><li class="src short"><a href="#v:wfix">wfix</a> :: <a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; w (w a -&gt; a) -&gt; a</li><li class="src short"><a href="#v:cfix">cfix</a> :: <a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; (w a -&gt; a) -&gt; w a</li><li class="src short"><a href="#v:kfix">kfix</a> :: <a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> w =&gt; w (w a -&gt; a) -&gt; w a</li><li class="src short"><a href="#v:-61--62--61-">(=&gt;=)</a> :: <a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; (w a -&gt; b) -&gt; (w b -&gt; c) -&gt; w a -&gt; c</li><li class="src short"><a href="#v:-61--60--61-">(=&lt;=)</a> :: <a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; (w b -&gt; c) -&gt; (w a -&gt; b) -&gt; w a -&gt; c</li><li class="src short"><a href="#v:-60--60--61-">(&lt;&lt;=)</a> :: <a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; (w a -&gt; b) -&gt; w a -&gt; w b</li><li class="src short"><a href="#v:-61--62--62-">(=&gt;&gt;)</a> :: <a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; w a -&gt; (w a -&gt; b) -&gt; w b</li><li class="src short"><span class="keyword">class</span> <a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; <a href="#t:ComonadApply">ComonadApply</a> w <span class="keyword">where</span><ul class="subs"><li><a href="#v:-60--64--62-">(&lt;@&gt;)</a> :: w (a -&gt; b) -&gt; w a -&gt; w b</li><li><a href="#v:-64--62-">(@&gt;)</a> :: w a -&gt; w b -&gt; w b</li><li><a href="#v:-60--64-">(&lt;@)</a> :: w a -&gt; w b -&gt; w a</li></ul></li><li class="src short"><a href="#v:-60--64--64--62-">(&lt;@@&gt;)</a> :: <a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> w =&gt; w a -&gt; w (a -&gt; b) -&gt; w b</li><li class="src short"><a href="#v:liftW2">liftW2</a> :: <a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> w =&gt; (a -&gt; b -&gt; c) -&gt; w a -&gt; w b -&gt; w c</li><li class="src short"><a href="#v:liftW3">liftW3</a> :: <a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> w =&gt; (a -&gt; b -&gt; c -&gt; d) -&gt; w a -&gt; w b -&gt; w c -&gt; w d</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:Cokleisli">Cokleisli</a> w a b = <a href="#v:Cokleisli">Cokleisli</a> {<ul class="subs"><li><a href="#v:runCokleisli">runCokleisli</a> :: w a -&gt; b</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><li><a href="#v:-60--36-">(&lt;$)</a> :: a -&gt; f b -&gt; f a</li></ul></li><li class="src short"><a href="#v:-60--36--62-">(&lt;$&gt;)</a> :: <a href="Control-Comonad.html#t:Functor">Functor</a> f =&gt; (a -&gt; b) -&gt; f a -&gt; f b</li><li class="src short"><a href="#v:-36--62-">($&gt;)</a> :: <a href="Control-Comonad.html#t:Functor">Functor</a> f =&gt; f a -&gt; b -&gt; f b</li></ul></div><div id="interface"><h1 id="g:1">Comonads</h1><div class="top"><p class="src"><span class="keyword">class</span> <a href="Control-Comonad.html#t:Functor">Functor</a> w =&gt; <a name="t:Comonad" class="def">Comonad</a> w <span class="keyword">where</span> <a href="src/Control-Comonad.html#Comonad" class="link">Source</a></p><div class="doc"><p>There are two ways to define a comonad:</p><p>I. Provide definitions for <code><a href="Control-Comonad.html#v:extract">extract</a></code> and <code><a href="Control-Comonad.html#v:extend">extend</a></code>
satisfying these laws:</p><pre><code><a href="Control-Comonad.html#v:extend">extend</a></code> <code><a href="Control-Comonad.html#v:extract">extract</a></code>      = <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:id">id</a></code>
<code><a href="Control-Comonad.html#v:extract">extract</a></code> . <code><a href="Control-Comonad.html#v:extend">extend</a></code> f  = f
<code><a href="Control-Comonad.html#v:extend">extend</a></code> f . <code><a href="Control-Comonad.html#v:extend">extend</a></code> g = <code><a href="Control-Comonad.html#v:extend">extend</a></code> (f . <code><a href="Control-Comonad.html#v:extend">extend</a></code> g)
</pre><p>In this case, you may simply set <code><a href="Control-Comonad.html#v:fmap">fmap</a></code> = <code><a href="Control-Comonad.html#v:liftW">liftW</a></code>.</p><p>These laws are directly analogous to the laws for monads
and perhaps can be made clearer by viewing them as laws stating
that Cokleisli composition must be associative, and has extract for
a unit:</p><pre>f <code><a href="Control-Comonad.html#v:-61--62--61-">=&gt;=</a></code> <code><a href="Control-Comonad.html#v:extract">extract</a></code>   = f
<code><a href="Control-Comonad.html#v:extract">extract</a></code> <code><a href="Control-Comonad.html#v:-61--62--61-">=&gt;=</a></code> f   = f
(f <code><a href="Control-Comonad.html#v:-61--62--61-">=&gt;=</a></code> g) <code><a href="Control-Comonad.html#v:-61--62--61-">=&gt;=</a></code> h = f <code><a href="Control-Comonad.html#v:-61--62--61-">=&gt;=</a></code> (g <code><a href="Control-Comonad.html#v:-61--62--61-">=&gt;=</a></code> h)
</pre><p>II. Alternately, you may choose to provide definitions for <code><a href="Control-Comonad.html#v:fmap">fmap</a></code>,
<code><a href="Control-Comonad.html#v:extract">extract</a></code>, and <code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code> satisfying these laws:</p><pre><code><a href="Control-Comonad.html#v:extract">extract</a></code> . <code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code>      = <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:id">id</a></code>
<code><a href="Control-Comonad.html#v:fmap">fmap</a></code> <code><a href="Control-Comonad.html#v:extract">extract</a></code> . <code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code> = <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:id">id</a></code>
<code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code> . <code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code>    = <code><a href="Control-Comonad.html#v:fmap">fmap</a></code> <code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code> . <code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code>
</pre><p>In this case you may not rely on the ability to define <code><a href="Control-Comonad.html#v:fmap">fmap</a></code> in
terms of <code><a href="Control-Comonad.html#v:liftW">liftW</a></code>.</p><p>You may of course, choose to define both <code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code> <em>and</em> <code><a href="Control-Comonad.html#v:extend">extend</a></code>.
In that case you must also satisfy these laws:</p><pre><code><a href="Control-Comonad.html#v:extend">extend</a></code> f  = <code><a href="Control-Comonad.html#v:fmap">fmap</a></code> f . <code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code>
<code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code> = <code><a href="Control-Comonad.html#v:extend">extend</a></code> id
<code><a href="Control-Comonad.html#v:fmap">fmap</a></code> f    = <code><a href="Control-Comonad.html#v:extend">extend</a></code> (f . <code><a href="Control-Comonad.html#v:extract">extract</a></code>)
</pre><p>These are the default definitions of <code><a href="Control-Comonad.html#v:extend">extend</a></code> and <code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code> and
the definition of <code><a href="Control-Comonad.html#v:liftW">liftW</a></code> respectively.</p></div><div class="subs minimal"><p class="caption">Minimal complete definition</p><p class="src"><a href="Control-Comonad.html#v:extract">extract</a>, (<a href="Control-Comonad.html#v:duplicate">duplicate</a> | <a href="Control-Comonad.html#v:extend">extend</a>)</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:extract" class="def">extract</a> :: w a -&gt; a <a href="src/Control-Comonad.html#extract" class="link">Source</a></p><div class="doc"><pre><code><a href="Control-Comonad.html#v:extract">extract</a></code> . <code><a href="Control-Comonad.html#v:fmap">fmap</a></code> f = f . <code><a href="Control-Comonad.html#v:extract">extract</a></code>
</pre></div><p class="src"><a name="v:duplicate" class="def">duplicate</a> :: w a -&gt; w (w a) <a href="src/Control-Comonad.html#duplicate" class="link">Source</a></p><div class="doc"><pre><code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code> = <code><a href="Control-Comonad.html#v:extend">extend</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:id">id</a></code>
<code><a href="Control-Comonad.html#v:fmap">fmap</a></code> (<code><a href="Control-Comonad.html#v:fmap">fmap</a></code> f) . <code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code> = <code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code> . <code><a href="Control-Comonad.html#v:fmap">fmap</a></code> f
</pre></div><p class="src"><a name="v:extend" class="def">extend</a> :: (w a -&gt; b) -&gt; w a -&gt; w b <a href="src/Control-Comonad.html#extend" class="link">Source</a></p><div class="doc"><pre><code><a href="Control-Comonad.html#v:extend">extend</a></code> f = <code><a href="Control-Comonad.html#v:fmap">fmap</a></code> f . <code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code>
</pre></div></div><div class="subs instances"><p id="control.i:Comonad" class="caption collapser" onclick="toggleSection('i:Comonad')">Instances</p><div id="section.i:Comonad" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Comonad">Comonad</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor-Identity.html#t:Identity">Identity</a></span> <a href="src/Control-Comonad.html#line-172" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Comonad">Comonad</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Tree.html#t:Tree">Tree</a></span> <a href="src/Control-Comonad.html#line-190" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Comonad">Comonad</a> <a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-List-NonEmpty.html#t:NonEmpty">NonEmpty</a></span> <a href="src/Control-Comonad.html#line-196" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:Monoid">Monoid</a> m =&gt; <a href="Control-Comonad.html#t:Comonad">Comonad</a> ((-&gt;) m)</span> <a href="src/Control-Comonad.html#line-166" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Comonad">Comonad</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/ghc-prim-0.4.0.0/GHC-Tuple.html#t:-40--44--41-">(,)</a> e)</span> <a href="src/Control-Comonad.html#line-150" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Comonad">Comonad</a> (<a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html#t:Arg">Arg</a> e)</span> <a href="src/Control-Comonad.html#line-157" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; <a href="Control-Comonad.html#t:Comonad">Comonad</a> (<a href="Control-Comonad-Trans-Identity.html#t:IdentityT">IdentityT</a> w)</span> <a href="src/Control-Comonad.html#line-184" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Comonad">Comonad</a> (<a href="file:///usr/share/doc/libghc-tagged-doc/html/Data-Tagged.html#t:Tagged">Tagged</a> * s)</span> <a href="src/Control-Comonad.html#line-178" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; <a href="Control-Comonad.html#t:Comonad">Comonad</a> (<a href="Control-Comonad-Trans-Env.html#t:EnvT">EnvT</a> e w)</span> <a href="src/Control-Comonad.html#line-143" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; <a href="Control-Comonad.html#t:Comonad">Comonad</a> (<a href="Control-Comonad-Trans-Store.html#t:StoreT">StoreT</a> s w)</span> <a href="src/Control-Comonad.html#line-142" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Comonad.html#t:Comonad">Comonad</a> w, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:Monoid">Monoid</a> m) =&gt; <a href="Control-Comonad.html#t:Comonad">Comonad</a> (<a href="Control-Comonad-Trans-Traced.html#t:TracedT">TracedT</a> m w)</span> <a href="src/Control-Comonad.html#line-85" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Comonad.html#t:Comonad">Comonad</a> f, <a href="Control-Comonad.html#t:Comonad">Comonad</a> g) =&gt; <a href="Control-Comonad.html#t:Comonad">Comonad</a> (<a href="Data-Functor-Coproduct.html#t:Coproduct">Coproduct</a> f g)</span> <a href="src/Control-Comonad.html#line-57" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:liftW" class="def">liftW</a> :: <a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; (a -&gt; b) -&gt; w a -&gt; w b <a href="src/Control-Comonad.html#liftW" class="link">Source</a></p><div class="doc"><p>A suitable default definition for <code><a href="Control-Comonad.html#v:fmap">fmap</a></code> for a <code><a href="Control-Comonad.html#t:Comonad">Comonad</a></code>.
 Promotes a function to a comonad.</p><p>You can only safely use to define <code><a href="Control-Comonad.html#v:fmap">fmap</a></code> if your <code><a href="Control-Comonad.html#t:Comonad">Comonad</a></code>
 defined <code><a href="Control-Comonad.html#v:extend">extend</a></code>, not just <code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code>, since defining
 <code><a href="Control-Comonad.html#v:extend">extend</a></code> in terms of duplicate uses <code><a href="Control-Comonad.html#v:fmap">fmap</a></code>!</p><pre><code><a href="Control-Comonad.html#v:fmap">fmap</a></code> f = <code><a href="Control-Comonad.html#v:liftW">liftW</a></code> f = <code><a href="Control-Comonad.html#v:extend">extend</a></code> (f . <code><a href="Control-Comonad.html#v:extract">extract</a></code>)
</pre></div></div><div class="top"><p class="src"><a name="v:wfix" class="def">wfix</a> :: <a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; w (w a -&gt; a) -&gt; a <a href="src/Control-Comonad.html#wfix" class="link">Source</a></p><div class="doc"><p>Comonadic fixed point &#224; la David Menendez</p></div></div><div class="top"><p class="src"><a name="v:cfix" class="def">cfix</a> :: <a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; (w a -&gt; a) -&gt; w a <a href="src/Control-Comonad.html#cfix" class="link">Source</a></p><div class="doc"><p>Comonadic fixed point &#224; la Dominic Orchard</p></div></div><div class="top"><p class="src"><a name="v:kfix" class="def">kfix</a> :: <a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> w =&gt; w (w a -&gt; a) -&gt; w a <a href="src/Control-Comonad.html#kfix" class="link">Source</a></p><div class="doc"><p>Comonadic fixed point &#224; la Kenneth Foner:</p><p>This is the <code>evaluate</code> function from his <a href="https://www.youtube.com/watch?v=F7F-BzOB670">&quot;Getting a Quick Fix on Comonads&quot;</a> talk.</p></div></div><div class="top"><p class="src"><a name="v:-61--62--61-" class="def">(=&gt;=)</a> :: <a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; (w a -&gt; b) -&gt; (w b -&gt; c) -&gt; w a -&gt; c <span class="fixity">infixr 1</span><span class="rightedge"></span> <a href="src/Control-Comonad.html#%3D%3E%3D" class="link">Source</a></p><div class="doc"><p>Left-to-right <code><a href="Control-Comonad.html#t:Cokleisli">Cokleisli</a></code> composition</p></div></div><div class="top"><p class="src"><a name="v:-61--60--61-" class="def">(=&lt;=)</a> :: <a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; (w b -&gt; c) -&gt; (w a -&gt; b) -&gt; w a -&gt; c <span class="fixity">infixr 1</span><span class="rightedge"></span> <a href="src/Control-Comonad.html#%3D%3C%3D" class="link">Source</a></p><div class="doc"><p>Right-to-left <code><a href="Control-Comonad.html#t:Cokleisli">Cokleisli</a></code> composition</p></div></div><div class="top"><p class="src"><a name="v:-60--60--61-" class="def">(&lt;&lt;=)</a> :: <a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; (w a -&gt; b) -&gt; w a -&gt; w b <span class="fixity">infixr 1</span><span class="rightedge"></span> <a href="src/Control-Comonad.html#%3C%3C%3D" class="link">Source</a></p><div class="doc"><p><code><a href="Control-Comonad.html#v:extend">extend</a></code> in operator form</p></div></div><div class="top"><p class="src"><a name="v:-61--62--62-" class="def">(=&gt;&gt;)</a> :: <a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; w a -&gt; (w a -&gt; b) -&gt; w b <span class="fixity">infixl 1</span><span class="rightedge"></span> <a href="src/Control-Comonad.html#%3D%3E%3E" class="link">Source</a></p><div class="doc"><p><code><a href="Control-Comonad.html#v:extend">extend</a></code> with the arguments swapped. Dual to <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#v:-62--62--61-">&gt;&gt;=</a></code> for a <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a></code>.</p></div></div><h1 id="g:2">Combining Comonads</h1><div class="top"><p class="src"><span class="keyword">class</span> <a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; <a name="t:ComonadApply" class="def">ComonadApply</a> w <span class="keyword">where</span> <a href="src/Control-Comonad.html#ComonadApply" class="link">Source</a></p><div class="doc"><p><code>ComonadApply</code> is to <code>Comonad</code> like <code>Applicative</code> is to <code>Monad</code>.</p><p>Mathematically, it is a strong lax symmetric semi-monoidal comonad on the
 category <code>Hask</code> of Haskell types. That it to say that <code>w</code> is a strong lax
 symmetric semi-monoidal functor on Hask, where both <code><a href="Control-Comonad.html#v:extract">extract</a></code> and <code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code> are
 symmetric monoidal natural transformations.</p><p>Laws:</p><pre>(<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code>) <code><a href="Control-Comonad.html#v:-60--36--62-">&lt;$&gt;</a></code> u <code><a href="Control-Comonad.html#v:-60--64--62-">&lt;@&gt;</a></code> v <code><a href="Control-Comonad.html#v:-60--64--62-">&lt;@&gt;</a></code> w = u <code><a href="Control-Comonad.html#v:-60--64--62-">&lt;@&gt;</a></code> (v <code><a href="Control-Comonad.html#v:-60--64--62-">&lt;@&gt;</a></code> w)
<code><a href="Control-Comonad.html#v:extract">extract</a></code> (p <code><a href="Control-Comonad.html#v:-60--64--62-">&lt;@&gt;</a></code> q) = <code><a href="Control-Comonad.html#v:extract">extract</a></code> p (<code><a href="Control-Comonad.html#v:extract">extract</a></code> q)
<code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code> (p <code><a href="Control-Comonad.html#v:-60--64--62-">&lt;@&gt;</a></code> q) = (<code><a href="Control-Comonad.html#v:-60--64--62-">&lt;@&gt;</a></code>) <code><a href="Control-Comonad.html#v:-60--36--62-">&lt;$&gt;</a></code> <code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code> p <code><a href="Control-Comonad.html#v:-60--64--62-">&lt;@&gt;</a></code> <code><a href="Control-Comonad.html#v:duplicate">duplicate</a></code> q
</pre><p>If our type is both a <code><a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a></code> and <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code> we further require</p><pre>(<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#v:-60--42--62-">&lt;*&gt;</a></code>) = (<code><a href="Control-Comonad.html#v:-60--64--62-">&lt;@&gt;</a></code>)
</pre><p>Finally, if you choose to define (<code><a href="Control-Comonad.html#v:-60--64-">&lt;@</a></code>) and (<code><a href="Control-Comonad.html#v:-64--62-">@&gt;</a></code>), the results of your
 definitions should match the following laws:</p><pre>a <code><a href="Control-Comonad.html#v:-64--62-">@&gt;</a></code> b = <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Function.html#v:const">const</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:id">id</a></code> <code><a href="Control-Comonad.html#v:-60--36--62-">&lt;$&gt;</a></code> a <code><a href="Control-Comonad.html#v:-60--64--62-">&lt;@&gt;</a></code> b
a <code><a href="Control-Comonad.html#v:-60--64-">&lt;@</a></code> b = <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Function.html#v:const">const</a></code> <code><a href="Control-Comonad.html#v:-60--36--62-">&lt;$&gt;</a></code> a <code><a href="Control-Comonad.html#v:-60--64--62-">&lt;@&gt;</a></code> b
</pre></div><div class="subs minimal"><p class="caption">Minimal complete definition</p><p class="src">Nothing</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:-60--64--62-" class="def">(&lt;@&gt;)</a> :: w (a -&gt; b) -&gt; w a -&gt; w b <span class="fixity">infixl 4</span><span class="rightedge"></span> <a href="src/Control-Comonad.html#%3C%40%3E" class="link">Source</a></p><p class="src"><a name="v:-64--62-" class="def">(@&gt;)</a> :: w a -&gt; w b -&gt; w b <span class="fixity">infixl 4</span><span class="rightedge"></span> <a href="src/Control-Comonad.html#%40%3E" class="link">Source</a></p><p class="src"><a name="v:-60--64-" class="def">(&lt;@)</a> :: w a -&gt; w b -&gt; w a <span class="fixity">infixl 4</span><span class="rightedge"></span> <a href="src/Control-Comonad.html#%3C%40" class="link">Source</a></p></div><div class="subs instances"><p id="control.i:ComonadApply" class="caption collapser" onclick="toggleSection('i:ComonadApply')">Instances</p><div id="section.i:ComonadApply" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor-Identity.html#t:Identity">Identity</a></span> <a href="src/Control-Comonad.html#line-258" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Tree.html#t:Tree">Tree</a></span> <a href="src/Control-Comonad.html#line-267" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> <a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-List-NonEmpty.html#t:NonEmpty">NonEmpty</a></span> <a href="src/Control-Comonad.html#line-250" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:Monoid">Monoid</a> m =&gt; <a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> ((-&gt;) m)</span> <a href="src/Control-Comonad.html#line-253" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html#t:Semigroup">Semigroup</a> m =&gt; <a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/ghc-prim-0.4.0.0/GHC-Tuple.html#t:-40--44--41-">(,)</a> m)</span> <a href="src/Control-Comonad.html#line-245" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> w =&gt; <a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> (<a href="Control-Comonad-Trans-Identity.html#t:IdentityT">IdentityT</a> w)</span> <a href="src/Control-Comonad.html#line-263" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html#t:Semigroup">Semigroup</a> e, <a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> w) =&gt; <a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> (<a href="Control-Comonad-Trans-Env.html#t:EnvT">EnvT</a> e w)</span> <a href="src/Control-Comonad.html#line-158" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> w, <a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html#t:Semigroup">Semigroup</a> s) =&gt; <a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> (<a href="Control-Comonad-Trans-Store.html#t:StoreT">StoreT</a> s w)</span> <a href="src/Control-Comonad.html#line-135" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> w, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:Monoid">Monoid</a> m) =&gt; <a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> (<a href="Control-Comonad-Trans-Traced.html#t:TracedT">TracedT</a> m w)</span> <a href="src/Control-Comonad.html#line-78" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:-60--64--64--62-" class="def">(&lt;@@&gt;)</a> :: <a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> w =&gt; w a -&gt; w (a -&gt; b) -&gt; w b <span class="fixity">infixl 4</span><span class="rightedge"></span> <a href="src/Control-Comonad.html#%3C%40%40%3E" class="link">Source</a></p><div class="doc"><p>A variant of <code><a href="Control-Comonad.html#v:-60--64--62-">&lt;@&gt;</a></code> with the arguments reversed.</p></div></div><div class="top"><p class="src"><a name="v:liftW2" class="def">liftW2</a> :: <a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> w =&gt; (a -&gt; b -&gt; c) -&gt; w a -&gt; w b -&gt; w c <a href="src/Control-Comonad.html#liftW2" class="link">Source</a></p><div class="doc"><p>Lift a binary function into a <code><a href="Control-Comonad.html#t:Comonad">Comonad</a></code> with zipping</p></div></div><div class="top"><p class="src"><a name="v:liftW3" class="def">liftW3</a> :: <a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> w =&gt; (a -&gt; b -&gt; c -&gt; d) -&gt; w a -&gt; w b -&gt; w c -&gt; w d <a href="src/Control-Comonad.html#liftW3" class="link">Source</a></p><div class="doc"><p>Lift a ternary function into a <code><a href="Control-Comonad.html#t:Comonad">Comonad</a></code> with zipping</p></div></div><h1 id="g:3">Cokleisli Arrows</h1><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:Cokleisli" class="def">Cokleisli</a> w a b <a href="src/Control-Comonad.html#Cokleisli" class="link">Source</a></p><div class="doc"><p>The <code><a href="Control-Comonad.html#t:Cokleisli">Cokleisli</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Arrow">Arrow</a></code>s of a given <code><a href="Control-Comonad.html#t:Comonad">Comonad</a></code></p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Cokleisli" class="def">Cokleisli</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:runCokleisli" class="def">runCokleisli</a> :: w a -&gt; b</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Cokleisli" class="caption collapser" onclick="toggleSection('i:Cokleisli')">Instances</p><div id="section.i:Cokleisli" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#t:Category">Category</a> * (<a href="Control-Comonad.html#t:Cokleisli">Cokleisli</a> w)</span> <a href="src/Control-Comonad.html#line-359" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Arrow">Arrow</a> (<a href="Control-Comonad.html#t:Cokleisli">Cokleisli</a> w)</span> <a href="src/Control-Comonad.html#line-363" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:ArrowChoice">ArrowChoice</a> (<a href="Control-Comonad.html#t:Cokleisli">Cokleisli</a> w)</span> <a href="src/Control-Comonad.html#line-373" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Comonad">Comonad</a> w =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:ArrowApply">ArrowApply</a> (<a href="Control-Comonad.html#t:Cokleisli">Cokleisli</a> w)</span> <a href="src/Control-Comonad.html#line-370" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:ComonadApply">ComonadApply</a> w =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:ArrowLoop">ArrowLoop</a> (<a href="Control-Comonad.html#t:Cokleisli">Cokleisli</a> w)</span> <a href="src/Control-Comonad.html#line-376" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a> (<a href="Control-Comonad.html#t:Cokleisli">Cokleisli</a> w a)</span> <a href="src/Control-Comonad.html#line-387" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="Control-Comonad.html#t:Cokleisli">Cokleisli</a> w a)</span> <a href="src/Control-Comonad.html#line-380" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> (<a href="Control-Comonad.html#t:Cokleisli">Cokleisli</a> w a)</span> <a href="src/Control-Comonad.html#line-383" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h1 id="g:4">Functors</h1><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></p><div class="doc"><p>The <code><a href="Control-Comonad.html#t:Functor">Functor</a></code> class is used for types that can be mapped over.
Instances of <code><a href="Control-Comonad.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="Control-Comonad.html#t:Functor">Functor</a></code> for lists, <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#v:Maybe">Maybe</a></code> and <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#v:IO">IO</a></code>
satisfy these laws.</p></div><div class="subs minimal"><p class="caption">Minimal complete definition</p><p class="src"><a href="Control-Comonad.html#v:fmap">fmap</a></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</p><p class="src"><a name="v:-60--36-" class="def">(&lt;$)</a> :: a -&gt; f b -&gt; f a <span class="fixity">infixl 4</span><span class="rightedge"></span></p><div class="doc"><p>Replace all locations in the input with the same value.
 The default definition is <code><code><a href="Control-Comonad.html#v:fmap">fmap</a></code> . <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Function.html#v:const">const</a></code></code>, but this may be
 overridden with a more efficient version.</p></div></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 clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> []</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/System-IO.html#t:IO">IO</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> Id</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> P</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor-Identity.html#t:Identity">Identity</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:ZipList">ZipList</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:First">First</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:Last">Last</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-ParserCombinators-ReadPrec.html#t:ReadPrec">ReadPrec</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-ParserCombinators-ReadP.html#t:ReadP">ReadP</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> Digit</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> Node</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> Elem</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> FingerTree</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-IntMap-Strict.html#t:IntMap">IntMap</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Tree.html#t:Tree">Tree</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Sequence.html#t:Seq">Seq</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Sequence.html#t:ViewL">ViewL</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Sequence.html#t:ViewR">ViewR</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html#t:Min">Min</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html#t:Max">Max</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html#t:First">First</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html#t:Last">Last</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html#t:Option">Option</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> <a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-List-NonEmpty.html#t:NonEmpty">NonEmpty</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> ((-&gt;) r)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Either.html#t:Either">Either</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/ghc-prim-0.4.0.0/GHC-Tuple.html#t:-40--44--41-">(,)</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ix.html#t:Ix">Ix</a> i =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/array-0.5.1.0/Data-Array.html#t:Array">Array</a> i)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> (StateL s)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> (StateR s)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Const">Const</a> m)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:WrappedMonad">WrappedMonad</a> m)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Arrow">Arrow</a> a =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:ArrowMonad">ArrowMonad</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Proxy.html#t:Proxy">Proxy</a> *)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> (State s)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Map-Lazy.html#t:Map">Map</a> k)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html#t:Arg">Arg</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> f =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Reverse.html#t:Reverse">Reverse</a> f)</span></td><td class="doc"><p>Derived instance.</p></td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> f =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Applicative-Backwards.html#t:Backwards">Backwards</a> f)</span></td><td class="doc"><p>Derived instance.</p></td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> m =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Monad-Trans-Maybe.html#t:MaybeT">MaybeT</a> m)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> m =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Monad-Trans-List.html#t:ListT">ListT</a> m)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> m =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="Control-Comonad-Trans-Identity.html#t:IdentityT">IdentityT</a> m)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Constant.html#t:Constant">Constant</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> (HashMap k)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Arrow">Arrow</a> a =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:WrappedArrow">WrappedArrow</a> a b)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> f =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:Alt">Alt</a> * f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/libghc-tagged-doc/html/Data-Tagged.html#t:Tagged">Tagged</a> k s)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Comonad.html#t:Functor">Functor</a> f, <a href="Control-Comonad.html#t:Functor">Functor</a> g) =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Sum.html#t:Sum">Sum</a> f g)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Comonad.html#t:Functor">Functor</a> f, <a href="Control-Comonad.html#t:Functor">Functor</a> g) =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Product.html#t:Product">Product</a> f g)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Comonad.html#t:Functor">Functor</a> f, <a href="Control-Comonad.html#t:Functor">Functor</a> g) =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a> f g)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> m =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Monad-Trans-Writer-Strict.html#t:WriterT">WriterT</a> w m)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> m =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Monad-Trans-Writer-Lazy.html#t:WriterT">WriterT</a> w m)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> m =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Monad-Trans-Error.html#t:ErrorT">ErrorT</a> e m)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> m =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Monad-Trans-Except.html#t:ExceptT">ExceptT</a> e m)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> m =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Monad-Trans-State-Strict.html#t:StateT">StateT</a> s m)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> m =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Monad-Trans-State-Lazy.html#t:StateT">StateT</a> s m)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> m =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Monad-Trans-Reader.html#t:ReaderT">ReaderT</a> r m)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="Control-Comonad.html#t:Cokleisli">Cokleisli</a> w a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> w =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="Control-Comonad-Trans-Env.html#t:EnvT">EnvT</a> e w)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> w =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="Control-Comonad-Trans-Store.html#t:StoreT">StoreT</a> s w)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> w =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="Control-Comonad-Trans-Traced.html#t:TracedT">TracedT</a> m w)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Comonad.html#t:Functor">Functor</a> f, <a href="Control-Comonad.html#t:Functor">Functor</a> g) =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="Data-Functor-Coproduct.html#t:Coproduct">Coproduct</a> f g)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> m =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Monad-Trans-RWS-Strict.html#t:RWST">RWST</a> r w s m)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Comonad.html#t:Functor">Functor</a> m =&gt; <a href="Control-Comonad.html#t:Functor">Functor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Monad-Trans-RWS-Lazy.html#t:RWST">RWST</a> r w s m)</span></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:-60--36--62-" class="def">(&lt;$&gt;)</a> :: <a href="Control-Comonad.html#t:Functor">Functor</a> f =&gt; (a -&gt; b) -&gt; f a -&gt; f b <span class="fixity">infixl 4</span><span class="rightedge"></span></p><div class="doc"><p>An infix synonym for <code><a href="Control-Comonad.html#v:fmap">fmap</a></code>.</p><h4 id="control.ch:-60--36--62-0" class="caption collapser" onclick="toggleSection('ch:-60--36--62-0')">Examples</h4><div id="section.ch:-60--36--62-0" class="hide"><p>Convert from a <code><code>Maybe</code> <code>Int</code></code> to a <code><code>Maybe</code> <code>String</code></code> using <code>show</code>:</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>show &lt;$&gt; Nothing
</code></strong>Nothing
<code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>show &lt;$&gt; Just 3
</code></strong>Just &quot;3&quot;
</pre><p>Convert from an <code><code>Either</code> <code>Int</code> <code>Int</code></code> to an <code><code>Either</code> <code>Int</code></code>
 <code>String</code> using <code>show</code>:</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>show &lt;$&gt; Left 17
</code></strong>Left 17
<code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>show &lt;$&gt; Right 17
</code></strong>Right &quot;17&quot;
</pre><p>Double each element of a list:</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>(*2) &lt;$&gt; [1,2,3]
</code></strong>[2,4,6]
</pre><p>Apply <code>even</code> to the second element of a pair:</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>even &lt;$&gt; (2,2)
</code></strong>(2,True)
</pre></div></div></div><div class="top"><p class="src"><a name="v:-36--62-" class="def">($&gt;)</a> :: <a href="Control-Comonad.html#t:Functor">Functor</a> f =&gt; f a -&gt; b -&gt; f b <span class="fixity">infixl 4</span><span class="rightedge"></span></p><div class="doc"><p>Flipped version of <code><a href="Control-Comonad.html#v:-60--36-">&lt;$</a></code>.</p><h4 id="control.ch:-36--62-0" class="caption collapser" onclick="toggleSection('ch:-36--62-0')">Examples</h4><div id="section.ch:-36--62-0" class="hide"><p>Replace the contents of a <code><code>Maybe</code> <code>Int</code></code> with a constant <code>String</code>:</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>Nothing $&gt; &quot;foo&quot;
</code></strong>Nothing
<code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>Just 90210 $&gt; &quot;foo&quot;
</code></strong>Just &quot;foo&quot;
</pre><p>Replace the contents of an <code><code>Either</code> <code>Int</code> <code>Int</code></code> with a constant
 <code>String</code>, resulting in an <code><code>Either</code> <code>Int</code> <code>String</code></code>:</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>Left 8675309 $&gt; &quot;foo&quot;
</code></strong>Left 8675309
<code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>Right 8675309 $&gt; &quot;foo&quot;
</code></strong>Right &quot;foo&quot;
</pre><p>Replace each element of a list with a constant <code>String</code>:</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>[1,2,3] $&gt; &quot;foo&quot;
</code></strong>[&quot;foo&quot;,&quot;foo&quot;,&quot;foo&quot;]
</pre><p>Replace the second element of a pair with a constant <code>String</code>:</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>(1,2) $&gt; &quot;foo&quot;
</code></strong>(1,&quot;foo&quot;)
</pre></div><p><em>Since: 4.7.0.0</em></p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>