/usr/share/doc/libghc-profunctors-doc/html/Data-Profunctor-Unsafe.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 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <!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.Unsafe</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-Unsafe.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Data-Profunctor-Unsafe.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) 2011-2013 Edward Kmett</td></tr><tr><th>License</th><td>BSD-style (see the file LICENSE)</td></tr><tr><th>Maintainer</th><td>Edward Kmett <ekmett@gmail.com></td></tr><tr><th>Stability</th><td>provisional</td></tr><tr><th>Portability</th><td>portable</td></tr><tr><th>Safe Haskell</th><td>Trustworthy</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Data.Profunctor.Unsafe</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Profunctors</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>For a good explanation of profunctors 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><p>This module includes <em>unsafe</em> composition operators that are useful in
practice when it comes to generating optimal core in GHC.</p><p>If you import this module you are taking upon yourself the obligation
that you will only call the operators with <code>#</code> in their names with functions
that are operationally identity such as <code>newtype</code> constructors or the field
accessor of a <code>newtype</code>.</p><p>If you are ever in doubt, use <code><a href="Data-Profunctor-Unsafe.html#v:rmap">rmap</a></code> or <code><a href="Data-Profunctor-Unsafe.html#v:lmap">lmap</a></code>.</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">class</span> <a href="#t:Profunctor">Profunctor</a> p <span class="keyword">where</span><ul class="subs"><li><a href="#v:dimap">dimap</a> :: (a -> b) -> (c -> d) -> p b c -> p a d</li><li><a href="#v:lmap">lmap</a> :: (a -> b) -> p b c -> p a c</li><li><a href="#v:rmap">rmap</a> :: (b -> c) -> p a b -> p a c</li><li><a href="#v:-35-.">(#.)</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Coerce.html#t:Coercible">Coercible</a> c b => (b -> c) -> p a b -> p a c</li><li><a href="#v:.-35-">(.#)</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Coerce.html#t:Coercible">Coercible</a> b a => p b c -> (a -> b) -> p a c</li></ul></li></ul></div><div id="interface"><h1 id="g:1">Profunctors</h1><div class="top"><p class="src"><span class="keyword">class</span> <a name="t:Profunctor" class="def">Profunctor</a> p <span class="keyword">where</span> <a href="src/Data-Profunctor-Unsafe.html#Profunctor" class="link">Source</a></p><div class="doc"><p>Formally, the class <code><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a></code> represents a profunctor
from <code>Hask</code> -> <code>Hask</code>.</p><p>Intuitively it is a bifunctor where the first argument is contravariant
and the second argument is covariant.</p><p>You can define a <code><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a></code> by either defining <code><a href="Data-Profunctor-Unsafe.html#v:dimap">dimap</a></code> or by defining both
<code><a href="Data-Profunctor-Unsafe.html#v:lmap">lmap</a></code> and <code><a href="Data-Profunctor-Unsafe.html#v:rmap">rmap</a></code>.</p><p>If you supply <code><a href="Data-Profunctor-Unsafe.html#v:dimap">dimap</a></code>, you should ensure that:</p><pre><code><a href="Data-Profunctor-Unsafe.html#v:dimap">dimap</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="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:id">id</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></pre><p>If you supply <code><a href="Data-Profunctor-Unsafe.html#v:lmap">lmap</a></code> and <code><a href="Data-Profunctor-Unsafe.html#v:rmap">rmap</a></code>, ensure:</p><pre><code><a href="Data-Profunctor-Unsafe.html#v:lmap">lmap</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="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:id">id</a></code>
<code><a href="Data-Profunctor-Unsafe.html#v:rmap">rmap</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="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:id">id</a></code>
</pre><p>If you supply both, you should also ensure:</p><pre><code><a href="Data-Profunctor-Unsafe.html#v:dimap">dimap</a></code> f g ≡ <code><a href="Data-Profunctor-Unsafe.html#v:lmap">lmap</a></code> f <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="Data-Profunctor-Unsafe.html#v:rmap">rmap</a></code> g</pre><p>These ensure by parametricity:</p><pre><code><a href="Data-Profunctor-Unsafe.html#v:dimap">dimap</a></code> (f <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> g) (h <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> i) ≡ <code><a href="Data-Profunctor-Unsafe.html#v:dimap">dimap</a></code> g h <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="Data-Profunctor-Unsafe.html#v:dimap">dimap</a></code> f i
<code><a href="Data-Profunctor-Unsafe.html#v:lmap">lmap</a></code> (f <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> g) ≡ <code><a href="Data-Profunctor-Unsafe.html#v:lmap">lmap</a></code> g <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="Data-Profunctor-Unsafe.html#v:lmap">lmap</a></code> f
<code><a href="Data-Profunctor-Unsafe.html#v:rmap">rmap</a></code> (f <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> g) ≡ <code><a href="Data-Profunctor-Unsafe.html#v:rmap">rmap</a></code> f <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="Data-Profunctor-Unsafe.html#v:rmap">rmap</a></code> g
</pre></div><div class="subs minimal"><p class="caption">Minimal complete definition</p><p class="src"><a href="Data-Profunctor-Unsafe.html#v:dimap">dimap</a> | <a href="Data-Profunctor-Unsafe.html#v:lmap">lmap</a>, <a href="Data-Profunctor-Unsafe.html#v:rmap">rmap</a></p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:dimap" class="def">dimap</a> :: (a -> b) -> (c -> d) -> p b c -> p a d <a href="src/Data-Profunctor-Unsafe.html#dimap" class="link">Source</a></p><div class="doc"><p>Map over both arguments at the same time.</p><pre><code><a href="Data-Profunctor-Unsafe.html#v:dimap">dimap</a></code> f g ≡ <code><a href="Data-Profunctor-Unsafe.html#v:lmap">lmap</a></code> f <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="Data-Profunctor-Unsafe.html#v:rmap">rmap</a></code> g</pre></div><p class="src"><a name="v:lmap" class="def">lmap</a> :: (a -> b) -> p b c -> p a c <a href="src/Data-Profunctor-Unsafe.html#lmap" class="link">Source</a></p><div class="doc"><p>Map the first argument contravariantly.</p><pre><code><a href="Data-Profunctor-Unsafe.html#v:lmap">lmap</a></code> f ≡ <code><a href="Data-Profunctor-Unsafe.html#v:dimap">dimap</a></code> f <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:id">id</a></code></pre></div><p class="src"><a name="v:rmap" class="def">rmap</a> :: (b -> c) -> p a b -> p a c <a href="src/Data-Profunctor-Unsafe.html#rmap" class="link">Source</a></p><div class="doc"><p>Map the second argument covariantly.</p><pre><code><a href="Data-Profunctor-Unsafe.html#v:rmap">rmap</a></code> ≡ <code><a href="Data-Profunctor-Unsafe.html#v:dimap">dimap</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></pre></div><p class="src"><a name="v:-35-." class="def">(#.)</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Coerce.html#t:Coercible">Coercible</a> c b => (b -> c) -> p a b -> p a c <span class="fixity">infixr 9</span><span class="rightedge"></span> <a href="src/Data-Profunctor-Unsafe.html#%23." class="link">Source</a></p><div class="doc"><p>Strictly map the second argument argument
covariantly with a function that is assumed
operationally to be a cast, such as a newtype
constructor.</p><p><em>Note:</em> This operation is explicitly <em>unsafe</em>
since an implementation may choose to use
<code>unsafeCoerce</code> to implement this combinator
and it has no way to validate that your function
meets the requirements.</p><p>If you implement this combinator with
<code>unsafeCoerce</code>, then you are taking upon yourself
the obligation that you don't use GADT-like
tricks to distinguish values.</p><p>If you import <a href="Data-Profunctor-Unsafe.html">Data.Profunctor.Unsafe</a> you are
taking upon yourself the obligation that you
will only call this with a first argument that is
operationally identity.</p><p>The semantics of this function with respect to bottoms
should match the default definition:</p><pre>(<code><a href="Profuctor-Unsafe.html#v:-35-.">#.</a></code>) ≡ \f -> \p -> p `seq` <code><a href="Data-Profunctor-Unsafe.html#v:rmap">rmap</a></code> f p</pre></div><p class="src"><a name="v:.-35-" class="def">(.#)</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Coerce.html#t:Coercible">Coercible</a> b a => p b c -> (a -> b) -> p a c <span class="fixity">infixl 8</span><span class="rightedge"></span> <a href="src/Data-Profunctor-Unsafe.html#.%23" class="link">Source</a></p><div class="doc"><p>Strictly map the first argument argument
contravariantly with a function that is assumed
operationally to be a cast, such as a newtype
constructor.</p><p><em>Note:</em> This operation is explicitly <em>unsafe</em>
since an implementation may choose to use
<code>unsafeCoerce</code> to implement this combinator
and it has no way to validate that your function
meets the requirements.</p><p>If you implement this combinator with
<code>unsafeCoerce</code>, then you are taking upon yourself
the obligation that you don't use GADT-like
tricks to distinguish values.</p><p>If you import <a href="Data-Profunctor-Unsafe.html">Data.Profunctor.Unsafe</a> you are
taking upon yourself the obligation that you
will only call this with a second argument that is
operationally identity.</p><pre>(<code><a href="Data-Profunctor-Unsafe.html#v:.-35-">.#</a></code>) ≡ \p -> p `seq` \f -> <code><a href="Data-Profunctor-Unsafe.html#v:lmap">lmap</a></code> f p</pre></div></div><div class="subs instances"><p id="control.i:Profunctor" class="caption collapser" onclick="toggleSection('i:Profunctor')">Instances</p><div id="section.i:Profunctor" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> (->)</span> <a href="src/Data-Profunctor-Unsafe.html#line-183" class="link">Source</a></td><td class="doc empty"> </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 => <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Arrow.html#t:Kleisli">Kleisli</a> m)</span> <a href="src/Data-Profunctor-Unsafe.html#line-216" class="link">Source</a></td><td class="doc empty"> </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-Functor.html#t:Functor">Functor</a> f => <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> (<a href="file:///usr/share/doc/libghc-bifunctors-doc/html/Data-Bifunctor-Joker.html#t:Joker">Joker</a> f)</span> <a href="src/Data-Profunctor-Unsafe.html#line-254" class="link">Source</a></td><td class="doc empty"> </td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/libghc-contravariant-doc/html/Data-Functor-Contravariant.html#t:Contravariant">Contravariant</a> f => <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> (<a href="file:///usr/share/doc/libghc-bifunctors-doc/html/Data-Bifunctor-Clown.html#t:Clown">Clown</a> f)</span> <a href="src/Data-Profunctor-Unsafe.html#line-246" class="link">Source</a></td><td class="doc empty"> </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-Functor.html#t:Functor">Functor</a> w => <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Cokleisli">Cokleisli</a> w)</span> <a href="src/Data-Profunctor-Unsafe.html#line-231" class="link">Source</a></td><td class="doc empty"> </td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> (<a href="file:///usr/share/doc/libghc-tagged-doc/html/Data-Tagged.html#t:Tagged">Tagged</a> *)</span> <a href="src/Data-Profunctor-Unsafe.html#line-200" class="link">Source</a></td><td class="doc empty"> </td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> (<a href="Data-Profunctor.html#t:Forget">Forget</a> r)</span> <a href="src/Data-Profunctor-Unsafe.html#line-221" class="link">Source</a></td><td class="doc empty"> </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> p => <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> (<a href="Data-Profunctor.html#t:WrappedArrow">WrappedArrow</a> p)</span> <a href="src/Data-Profunctor-Unsafe.html#line-208" class="link">Source</a></td><td class="doc empty"> </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-Functor.html#t:Functor">Functor</a> f => <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> (<a href="Data-Profunctor.html#t:Costar">Costar</a> f)</span> <a href="src/Data-Profunctor-Unsafe.html#line-127" class="link">Source</a></td><td class="doc empty"> </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-Functor.html#t:Functor">Functor</a> f => <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> (<a href="Data-Profunctor.html#t:Star">Star</a> f)</span> <a href="src/Data-Profunctor-Unsafe.html#line-76" class="link">Source</a></td><td class="doc empty"> </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> (<a href="Data-Profunctor-Closed.html#t:Environment">Environment</a> p)</span> <a href="src/Data-Profunctor-Unsafe.html#line-153" class="link">Source</a></td><td class="doc empty"> </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> (<a href="Data-Profunctor-Closed.html#t:Closure">Closure</a> p)</span> <a href="src/Data-Profunctor-Unsafe.html#line-72" class="link">Source</a></td><td class="doc empty"> </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> (<a href="Data-Profunctor-Codensity.html#t:Codensity">Codensity</a> p)</span> <a href="src/Data-Profunctor-Unsafe.html#line-30" class="link">Source</a></td><td class="doc empty"> </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> (<a href="Data-Profunctor-Tambara.html#t:Copastro">Copastro</a> p)</span> <a href="src/Data-Profunctor-Unsafe.html#line-237" class="link">Source</a></td><td class="doc empty"> </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> (<a href="Data-Profunctor-Tambara.html#t:Cotambara">Cotambara</a> p)</span> <a href="src/Data-Profunctor-Unsafe.html#line-198" class="link">Source</a></td><td class="doc empty"> </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> (<a href="Data-Profunctor-Tambara.html#t:Pastro">Pastro</a> p)</span> <a href="src/Data-Profunctor-Unsafe.html#line-151" class="link">Source</a></td><td class="doc empty"> </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> (<a href="Data-Profunctor-Tambara.html#t:Tambara">Tambara</a> p)</span> <a href="src/Data-Profunctor-Unsafe.html#line-44" class="link">Source</a></td><td class="doc empty"> </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-Functor.html#t:Functor">Functor</a> f, <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> p) => <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> (<a href="Data-Profunctor-Cayley.html#t:Cayley">Cayley</a> f p)</span> <a href="src/Data-Profunctor-Unsafe.html#line-43" class="link">Source</a></td><td class="doc empty"> </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) => <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-Unsafe.html#line-240" class="link">Source</a></td><td class="doc empty"> </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) => <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-Unsafe.html#line-78" class="link">Source</a></td><td class="doc empty"> </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) => <a href="Data-Profunctor-Unsafe.html#t:Profunctor">Profunctor</a> (<a href="Data-Profunctor-Ran.html#t:Ran">Ran</a> p q)</span> <a href="src/Data-Profunctor-Unsafe.html#line-43" class="link">Source</a></td><td class="doc empty"> </td></tr></table></div></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>
|