This file is indexed.

/usr/share/doc/libghc-profunctors-doc/html/Data-Profunctor-Composition.html is in libghc-profunctors-doc 5.1.2-1build1.

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
<!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>Data.Profunctor.Composition</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_Data-Profunctor-Composition.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Data-Profunctor-Composition.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">profunctors-5.1.2: Profunctors</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Copyright</th><td>(C) 2014 Edward Kmett</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>experimental</td></tr><tr><th>Portability</th><td>GADTs, TFs, MPTCs, RankN</td></tr><tr><th>Safe Haskell</th><td>Safe</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Data.Profunctor.Composition</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Profunctor Composition</a></li><li><a href="#g:2">Unitors and Associator</a></li><li><a href="#g:3">Generalized Composition</a></li><li><a href="#g:4">Right Kan Lift</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">data</span> <a href="#t:Procompose">Procompose</a> p q d c <span class="keyword">where</span><ul class="subs"><li><a href="#v:Procompose">Procompose</a> ::  p x c -&gt; q d x -&gt; <a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p q d c</li></ul></li><li class="src short"><a href="#v:procomposed">procomposed</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#t:Category">Category</a> p =&gt; <a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p p a b -&gt; p a b</li><li class="src short"><a href="#v:idl">idl</a> :: <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> q =&gt; Iso (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (-&gt;) q d c) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (-&gt;) r d' c') (q d c) (r d' c')</li><li class="src short"><a href="#v:idr">idr</a> :: <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> q =&gt; Iso (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> q (-&gt;) d c) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> r (-&gt;) d' c') (q d c) (r d' c')</li><li class="src short"><a href="#v:assoc">assoc</a> :: Iso (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> q r) a b) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> x (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> y z) a b) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p q) r a b) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> x y) z a b)</li><li class="src short"><a href="#v:stars">stars</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> g =&gt; Iso (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="Data-Profunctor.html#t:Star">Star</a> f) (<a href="Data-Profunctor.html#t:Star">Star</a> g) d c) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="Data-Profunctor.html#t:Star">Star</a> f') (<a href="Data-Profunctor.html#t:Star">Star</a> g') d' c') (<a href="Data-Profunctor.html#t:Star">Star</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a> g f) d c) (<a href="Data-Profunctor.html#t:Star">Star</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a> g' f') d' c')</li><li class="src short"><a href="#v:kleislis">kleislis</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a> g =&gt; Iso (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a> f) (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a> g) d c) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a> f') (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a> g') d' c') (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a> g f) d c) (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a> g' f') d' c')</li><li class="src short"><a href="#v:costars">costars</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f =&gt; Iso (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="Data-Profunctor.html#t:Costar">Costar</a> f) (<a href="Data-Profunctor.html#t:Costar">Costar</a> g) d c) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="Data-Profunctor.html#t:Costar">Costar</a> f') (<a href="Data-Profunctor.html#t:Costar">Costar</a> g') d' c') (<a href="Data-Profunctor.html#t:Costar">Costar</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) d c) (<a href="Data-Profunctor.html#t:Costar">Costar</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') d' c')</li><li class="src short"><a href="#v:cokleislis">cokleislis</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f =&gt; Iso (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</a> f) (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</a> g) d c) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</a> f') (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</a> g') d' c') (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</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) d c) (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</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') d' c')</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:Rift">Rift</a> p q a b = <a href="#v:Rift">Rift</a> {<ul class="subs"><li><a href="#v:runRift">runRift</a> :: <span class="keyword">forall</span> x. p b x -&gt; q a x</li></ul>}</li><li class="src short"><a href="#v:decomposeRift">decomposeRift</a> :: <a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p (<a href="Data-Profunctor-Composition.html#t:Rift">Rift</a> p q) <a href="Data-Profunctor.html#t::-45--62-">:-&gt;</a> q</li></ul></div><div id="interface"><h1 id="g:1">Profunctor Composition</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Procompose" class="def">Procompose</a> p q d c <span class="keyword">where</span> <a href="src/Data-Profunctor-Composition.html#Procompose" class="link">Source</a></p><div class="doc"><p><code><code><a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a></code> p q</code> is the <code><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a></code> composition of the
 <code><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a></code>s <code>p</code> and <code>q</code>.</p><p>For a good explanation of <code><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a></code> composition in Haskell
 see Dan Piponi's article:</p><p><a href="http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html">http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html</a></p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Procompose" class="def">Procompose</a> ::  p x c -&gt; q d x -&gt; <a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p q d c</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:Procompose" class="caption collapser" onclick="toggleSection('i:Procompose')">Instances</p><div id="section.i:Procompose" class="show"><table><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-Category.html#t:Category">Category</a> * p =&gt; <a href="Data-Profunctor-Monad.html#t:ProfunctorMonad">ProfunctorMonad</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p)</span> <a href="src/Data-Profunctor-Composition.html#line-70" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Profunctor-Monad.html#t:ProfunctorFunctor">ProfunctorFunctor</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p)</span> <a href="src/Data-Profunctor-Composition.html#line-67" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Profunctor-Adjunction.html#t:ProfunctorAdjunction">ProfunctorAdjunction</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p) (<a href="Data-Profunctor-Composition.html#t:Rift">Rift</a> p)</span> <a href="src/Data-Profunctor-Composition.html#line-270" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> p, <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> q) =&gt; <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p q)</span> <a href="src/Data-Profunctor-Composition.html#line-78" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Profunctor-Rep.html#t:Corepresentable">Corepresentable</a> p, <a href="Data-Profunctor-Rep.html#t:Corepresentable">Corepresentable</a> q) =&gt; <a href="Data-Profunctor.html#t:Costrong">Costrong</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p q)</span> <a href="src/Data-Profunctor-Composition.html#line-130" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Profunctor.html#t:Choice">Choice</a> p, <a href="Data-Profunctor.html#t:Choice">Choice</a> q) =&gt; <a href="Data-Profunctor.html#t:Choice">Choice</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p q)</span> <a href="src/Data-Profunctor-Composition.html#line-120" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Profunctor.html#t:Strong">Strong</a> p, <a href="Data-Profunctor.html#t:Strong">Strong</a> q) =&gt; <a href="Data-Profunctor.html#t:Strong">Strong</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p q)</span> <a href="src/Data-Profunctor-Composition.html#line-114" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Profunctor-Closed.html#t:Closed">Closed</a> p, <a href="Data-Profunctor-Closed.html#t:Closed">Closed</a> q) =&gt; <a href="Data-Profunctor-Closed.html#t:Closed">Closed</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p q)</span> <a href="src/Data-Profunctor-Composition.html#line-126" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Profunctor-Rep.html#t:Corepresentable">Corepresentable</a> p, <a href="Data-Profunctor-Rep.html#t:Corepresentable">Corepresentable</a> q) =&gt; <a href="Data-Profunctor-Rep.html#t:Corepresentable">Corepresentable</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p q)</span> <a href="src/Data-Profunctor-Composition.html#line-109" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Profunctor-Rep.html#t:Representable">Representable</a> p, <a href="Data-Profunctor-Rep.html#t:Representable">Representable</a> q) =&gt; <a href="Data-Profunctor-Rep.html#t:Representable">Representable</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p q)</span> <a href="src/Data-Profunctor-Composition.html#line-100" class="link">Source</a></td><td class="doc"><p>The composition of two <code><a href="Data-Profunctor-Rep.html#t:Representable">Representable</a></code> <code><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a></code>s is <code><a href="Data-Profunctor-Rep.html#t:Representable">Representable</a></code> by
 the composition of their representations.</p></td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Profunctor-Sieve.html#t:Cosieve">Cosieve</a> p f, <a href="Data-Profunctor-Sieve.html#t:Cosieve">Cosieve</a> q g) =&gt; <a href="Data-Profunctor-Sieve.html#t:Cosieve">Cosieve</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p q) (<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> <a href="src/Data-Profunctor-Composition.html#line-105" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Profunctor-Sieve.html#t:Sieve">Sieve</a> p f, <a href="Data-Profunctor-Sieve.html#t:Sieve">Sieve</a> q g) =&gt; <a href="Data-Profunctor-Sieve.html#t:Sieve">Sieve</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p q) (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a> g f)</span> <a href="src/Data-Profunctor-Composition.html#line-94" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> p =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p q a)</span> <a href="src/Data-Profunctor-Composition.html#line-90" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="Data-Profunctor-Rep.html#t:Corep">Corep</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p q) = <a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a> (<a href="Data-Profunctor-Rep.html#t:Corep">Corep</a> p) (<a href="Data-Profunctor-Rep.html#t:Corep">Corep</a> q)</span> <a href="src/Data-Profunctor-Composition.html#line-110" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="keyword">type</span> <a href="Data-Profunctor-Rep.html#t:Rep">Rep</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p q) = <a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a> (<a href="Data-Profunctor-Rep.html#t:Rep">Rep</a> q) (<a href="Data-Profunctor-Rep.html#t:Rep">Rep</a> p)</span> <a href="src/Data-Profunctor-Composition.html#line-101" 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:procomposed" class="def">procomposed</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#t:Category">Category</a> p =&gt; <a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p p a b -&gt; p a b <a href="src/Data-Profunctor-Composition.html#procomposed" class="link">Source</a></p></div><h1 id="g:2">Unitors and Associator</h1><div class="top"><p class="src"><a name="v:idl" class="def">idl</a> :: <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> q =&gt; Iso (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (-&gt;) q d c) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (-&gt;) r d' c') (q d c) (r d' c') <a href="src/Data-Profunctor-Composition.html#idl" class="link">Source</a></p><div class="doc"><p><code>(-&gt;)</code> functions as a lax identity for <code><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a></code> composition.</p><p>This provides an <code>Iso</code> for the <code>lens</code> package that witnesses the
 isomorphism between <code><code><a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a></code> (-&gt;) q d c</code> and <code>q d c</code>, which
 is the left identity law.</p><pre><code><a href="Data-Profunctor-Composition.html#v:idl">idl</a></code> :: <code><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a></code> q =&gt; Iso' (<code><a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a></code> (-&gt;) q d c) (q d c)
</pre></div></div><div class="top"><p class="src"><a name="v:idr" class="def">idr</a> :: <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> q =&gt; Iso (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> q (-&gt;) d c) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> r (-&gt;) d' c') (q d c) (r d' c') <a href="src/Data-Profunctor-Composition.html#idr" class="link">Source</a></p><div class="doc"><p><code>(-&gt;)</code> functions as a lax identity for <code><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a></code> composition.</p><p>This provides an <code>Iso</code> for the <code>lens</code> package that witnesses the
 isomorphism between <code><code><a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a></code> q (-&gt;) d c</code> and <code>q d c</code>, which
 is the right identity law.</p><pre><code><a href="Data-Profunctor-Composition.html#v:idr">idr</a></code> :: <code><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a></code> q =&gt; Iso' (<code><a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a></code> q (-&gt;) d c) (q d c)
</pre></div></div><div class="top"><p class="src"><a name="v:assoc" class="def">assoc</a> :: Iso (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> q r) a b) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> x (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> y z) a b) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p q) r a b) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> x y) z a b) <a href="src/Data-Profunctor-Composition.html#assoc" class="link">Source</a></p><div class="doc"><p>The associator for <code><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a></code> composition.</p><p>This provides an <code>Iso</code> for the <code>lens</code> package that witnesses the
 isomorphism between <code><code><a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a></code> p (<code><a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a></code> q r) a b</code> and
 <code><code><a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a></code> (<code><a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a></code> p q) r a b</code>, which arises because
 <code>Prof</code> is only a bicategory, rather than a strict 2-category.</p></div></div><h1 id="g:3">Generalized Composition</h1><div class="top"><p class="src"><a name="v:stars" class="def">stars</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> g =&gt; Iso (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="Data-Profunctor.html#t:Star">Star</a> f) (<a href="Data-Profunctor.html#t:Star">Star</a> g) d c) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="Data-Profunctor.html#t:Star">Star</a> f') (<a href="Data-Profunctor.html#t:Star">Star</a> g') d' c') (<a href="Data-Profunctor.html#t:Star">Star</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a> g f) d c) (<a href="Data-Profunctor.html#t:Star">Star</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a> g' f') d' c') <a href="src/Data-Profunctor-Composition.html#stars" class="link">Source</a></p><div class="doc"><p><code><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a></code> composition generalizes <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code> composition in two ways.</p><p>This is the first, which shows that <code>exists b. (a -&gt; f b, b -&gt; g c)</code> is
 isomorphic to <code>a -&gt; f (g c)</code>.</p><pre><code><a href="Data-Profunctor-Composition.html#v:stars">stars</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code> f =&gt; Iso' (<code><a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a></code> (<code><a href="Data-Profunctor.html#t:Star">Star</a></code> f) (<code><a href="Data-Profunctor.html#t:Star">Star</a></code> g) d c) (<code><a href="Data-Profunctor.html#t:Star">Star</a></code> (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a></code> f g) d c)</pre></div></div><div class="top"><p class="src"><a name="v:kleislis" class="def">kleislis</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a> g =&gt; Iso (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a> f) (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a> g) d c) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a> f') (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a> g') d' c') (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a> g f) d c) (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a> g' f') d' c') <a href="src/Data-Profunctor-Composition.html#kleislis" class="link">Source</a></p><div class="doc"><p>This is a variant on <code><a href="Data-Profunctor-Composition.html#v:stars">stars</a></code> that uses <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a></code> instead of <code><a href="Data-Profunctor.html#t:Star">Star</a></code>.</p><pre><code><a href="Data-Profunctor-Composition.html#v:kleislis">kleislis</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a></code> f =&gt; Iso' (<code><a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a></code> (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a></code> f) (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a></code> g) d c) (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a></code> (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a></code> f g) d c)</pre></div></div><div class="top"><p class="src"><a name="v:costars" class="def">costars</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f =&gt; Iso (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="Data-Profunctor.html#t:Costar">Costar</a> f) (<a href="Data-Profunctor.html#t:Costar">Costar</a> g) d c) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="Data-Profunctor.html#t:Costar">Costar</a> f') (<a href="Data-Profunctor.html#t:Costar">Costar</a> g') d' c') (<a href="Data-Profunctor.html#t:Costar">Costar</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) d c) (<a href="Data-Profunctor.html#t:Costar">Costar</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') d' c') <a href="src/Data-Profunctor-Composition.html#costars" class="link">Source</a></p><div class="doc"><p><code><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a></code> composition generalizes <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code> composition in two ways.</p><p>This is the second, which shows that <code>exists b. (f a -&gt; b, g b -&gt; c)</code> is
 isomorphic to <code>g (f a) -&gt; c</code>.</p><pre><code><a href="Data-Profunctor-Composition.html#v:costars">costars</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code> f =&gt; Iso' (<code><a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a></code> (<code><a href="Data-Profunctor.html#t:Costar">Costar</a></code> f) (<code><a href="Data-Profunctor.html#t:Costar">Costar</a></code> g) d c) (<code><a href="Data-Profunctor.html#t:Costar">Costar</a></code> (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a></code> g f) d c)</pre></div></div><div class="top"><p class="src"><a name="v:cokleislis" class="def">cokleislis</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f =&gt; Iso (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</a> f) (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</a> g) d c) (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</a> f') (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</a> g') d' c') (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</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) d c) (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</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') d' c') <a href="src/Data-Profunctor-Composition.html#cokleislis" class="link">Source</a></p><div class="doc"><p>This is a variant on <code><a href="Data-Profunctor-Composition.html#v:costars">costars</a></code> that uses <code><a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</a></code> instead
 of <code><a href="Data-Profunctor.html#t:Costar">Costar</a></code>.</p><pre><code><a href="Data-Profunctor-Composition.html#v:cokleislis">cokleislis</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code> f =&gt; Iso' (<code><a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a></code> (<code><a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</a></code> f) (<code><a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</a></code> g) d c) (<code><a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</a></code> (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a></code> g f) d c)</pre></div></div><h1 id="g:4">Right Kan Lift</h1><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:Rift" class="def">Rift</a> p q a b <a href="src/Data-Profunctor-Composition.html#Rift" class="link">Source</a></p><div class="doc"><p>This represents the right Kan lift of a <code><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a></code> <code>q</code> along a <code><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a></code> <code>p</code> in a limited version of the 2-category of Profunctors where the only object is the category Hask, 1-morphisms are profunctors composed and compose with Profunctor composition, and 2-morphisms are just natural transformations.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Rift" class="def">Rift</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:runRift" class="def">runRift</a> :: <span class="keyword">forall</span> x. p b x -&gt; q a x</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:Rift" class="caption collapser" onclick="toggleSection('i:Rift')">Instances</p><div id="section.i:Rift" class="show"><table><tr><td class="src clearfix"><span class="inst-left">(~) (* -&gt; * -&gt; *) p q =&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="Data-Profunctor-Composition.html#t:Rift">Rift</a> p q)</span> <a href="src/Data-Profunctor-Composition.html#line-257" class="link">Source</a></td><td class="doc"><p><code><code><a href="Data-Profunctor-Composition.html#t:Rift">Rift</a></code> p p</code> forms 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> in the <code><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a></code> 2-category, which is isomorphic to a Haskell <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#t:Category">Category</a></code> instance.</p></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-Category.html#t:Category">Category</a> * p =&gt; <a href="Data-Profunctor-Monad.html#t:ProfunctorComonad">ProfunctorComonad</a> (<a href="Data-Profunctor-Composition.html#t:Rift">Rift</a> p)</span> <a href="src/Data-Profunctor-Composition.html#line-236" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Profunctor-Monad.html#t:ProfunctorFunctor">ProfunctorFunctor</a> (<a href="Data-Profunctor-Composition.html#t:Rift">Rift</a> p)</span> <a href="src/Data-Profunctor-Composition.html#line-233" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Profunctor-Adjunction.html#t:ProfunctorAdjunction">ProfunctorAdjunction</a> (<a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p) (<a href="Data-Profunctor-Composition.html#t:Rift">Rift</a> p)</span> <a href="src/Data-Profunctor-Composition.html#line-270" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> p, <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> q) =&gt; <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> (<a href="Data-Profunctor-Composition.html#t:Rift">Rift</a> p q)</span> <a href="src/Data-Profunctor-Composition.html#line-240" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> p =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> (<a href="Data-Profunctor-Composition.html#t:Rift">Rift</a> p q a)</span> <a href="src/Data-Profunctor-Composition.html#line-252" 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:decomposeRift" class="def">decomposeRift</a> :: <a href="Data-Profunctor-Composition.html#t:Procompose">Procompose</a> p (<a href="Data-Profunctor-Composition.html#t:Rift">Rift</a> p q) <a href="Data-Profunctor.html#t::-45--62-">:-&gt;</a> q <a href="src/Data-Profunctor-Composition.html#decomposeRift" class="link">Source</a></p><div class="doc"><p>The 2-morphism that defines a left Kan lift.</p><p>Note: When <code>p</code> is right adjoint to <code><code><a href="Data-Profunctor-Composition.html#t:Rift">Rift</a></code> p (-&gt;)</code> then <code><a href="Data-Profunctor-Composition.html#v:decomposeRift">decomposeRift</a></code> is the <code><a href="Data-Profunctor-Adjunction.html#v:counit">counit</a></code> of the adjunction.</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>