>                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
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to