
2 May
2008
2 May
'08
11:45 a.m.
unification f :: a = h = (e -> d -> c) x b = d
No. x :: b = d (a typo?) Paul: What's wrong with x being of type b and of type d? Could you perhaps explain the error please?
Nothing's wrong, you just forgot a ::, that is, you wrote x b = d instead of x :: b = d.
Don't forget also that
funk :: a -> b -> c = h -> e,
which means that e = b -> c Paul: is that something to do with partial application? (funk f) is a partially applied function, correct? Again an explanation would be appreciated.
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. -Brent