<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div class="Wj3C7c">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; unification<br>
 &nbsp; &nbsp; &nbsp; &nbsp;f :: a = h = (e -&gt; d -&gt; c)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;x b = d<br>
<br>
No. x :: b = d (a typo?)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Paul: What&#39;s wrong with x being of type b and of type d? Could you perhaps explain the error please?</div></div></blockquote><div><br>Nothing&#39;s wrong, you just forgot a ::, that is, you wrote x b = d&nbsp; instead of x :: b = d.<br>
&nbsp;<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div class="Wj3C7c"><br>
<br>
Don&#39;t forget also that<br>
<br>
funk :: a -&gt; b -&gt; c = h -&gt; e,<br>
<br>
which means that e = b -&gt; c<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Paul: is that something to do with partial application? (funk f) is a partially applied function, correct? Again an explanation would be appreciated.</div></div></blockquote><div><br>It&#39;s because function arrows associate to the right, so a -&gt; b -&gt; c is really shorthand for (a -&gt; (b -&gt; c)).&nbsp; If (a -&gt; (b -&gt; c)) = h -&gt; e, then a = h and (b -&gt; c) = e.<br>
&nbsp;<br>-Brent<br></div></div>