10 lines
753 B
HTML
10 lines
753 B
HTML
<h2 id="fix-composition-22">Fix Composition (2/2)</h2>
|
|
<p>Goal, find: <code>◎ :: (b -> F c) -> (a -> F b) -> (a -> F c)</code><br /><code>f :: a -> F b</code>, <code>g :: b -> F c</code>, <span class="yellow"><code>f x :: F b</code></span>:</p>
|
|
<ul>
|
|
<li>Use <code>fmap :: (t -> u) -> (F t -> F u)</code>!</li>
|
|
<li><code>(fmap g) :: F b -> F (F c)</code> ; (<code>t=b</code>, <code>u=F c</code>)</li>
|
|
<li><code>(fmap g) (f x) :: F (F c)</code> it almost WORKS!</li>
|
|
<li>We lack an important component, <code>join :: F (F c) -> F c</code></li>
|
|
<li><code>(g ◎ f) x = join ((fmap g) (f x))</code> ☺<br />◎ is the Kleisli composition; in Haskell: <code><=<</code> (in <code>Control.Monad</code>).</li>
|
|
</ul>
|