Oh, so this signature is really a partial application that expects another parameter to be executed.<br>So<br>
resultFun   :: (h b -&gt; h b&#39;) -&gt; (h (a-&gt;b) -&gt; h 
(a-&gt;b&#39;))<br>is<br>foo :: h b -&gt; h b&#39;<br>bar :: h (a-&gt;b) -&gt; h 
(a-&gt;b&#39;)<br><br>firstFunction = resultFun foo<br>result = firstFunction bar<br><br>Is this correct?<br><br><div class="gmail_quote">On Thu, Nov 18, 2010 at 10:52 AM, Daniel Fischer <span dir="ltr">&lt;<a href="mailto:daniel.is.fischer@web.de">daniel.is.fischer@web.de</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><div></div><div class="h5">On Thursday 18 November 2010 16:07:34, MH wrote:<br>
&gt; I am looking at signatures for Arrow and Composable classes and I cannot<br>
&gt; understand some of them. Could you please explain me the following:<br>
&gt; Let&#39;s take for example the following:<br>
&gt;<br>
&gt; class FunAble h =&gt; FunDble h where<br>
&gt;   resultFun   :: (h b -&gt; h b&#39;) -&gt; (h (a-&gt;b) -&gt; h (a-&gt;b&#39;))<br>
&gt;<br>
&gt; class FunAble h where<br>
&gt;   secondFun :: (h b -&gt; h b&#39;) -&gt; (h (a,b) -&gt; h (a,b&#39;)) -- for &#39;second&#39;<br>
&gt;<br>
&gt;<br>
&gt; in the signatures:<br>
&gt; resultFun   :: (h b -&gt; h b&#39;) -&gt; (h (a-&gt;b) -&gt; h (a-&gt;b&#39;))<br>
&gt; secondFun :: (h b -&gt; h b&#39;) -&gt; (h (a,b) -&gt; h (a,b&#39;))<br>
&gt;<br>
&gt; if (h b -&gt; h b&#39;) is the input of these functions where does &#39;a&#39; comes<br>
&gt; from in the output?<br>
<br>
</div></div>&#39;a&#39; is arbitrary, so it works for all &#39;a&#39;. The result of resultFun foo,<br>
resp. secondFun foo is a function of type<br>
<div class="im"><br>
h (a -&gt; b) -&gt; h (a -&gt; b&#39;)<br>
<br>
</div>resp.<br>
<div class="im"><br>
h (a,b) -&gt; h (a,b&#39;)<br>
<br>
</div>where the types b and b&#39; have been determined by foo (not necessarily<br>
completely, if foo is id, all that has been determined is that b&#39; = b) and<br>
&#39;a&#39; is still arbitrary. The type variable &#39;a&#39; is fixed or restricted when<br>
xxxFun gets its second argument, bar in<br>
<br>
resultFun foo bar<br>
<br>
resp.<br>
<br>
secondFun foo bar.<br>
<br>
&gt;<br>
&gt; Thanks,<br>
<br>
HTH,<br>
<font color="#888888">Daniel<br>
<br>
</font></blockquote></div><br>