<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"> unification<br>
f :: a = h = (e -> d -> c)<br>
x b = d<br>
<br>
No. x :: b = d (a typo?)<br>
Paul: What'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's wrong, you just forgot a ::, that is, you wrote x b = d instead of x :: b = d.<br>
<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't forget also that<br>
<br>
funk :: a -> b -> c = h -> e,<br>
<br>
which means that e = b -> c<br>
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's because function arrows associate to the right, so a -> b -> c is really shorthand for (a -> (b -> c)). If (a -> (b -> c)) = h -> e, then a = h and (b -> c) = e.<br>
<br>-Brent<br></div></div>