
Hi, I'm reading "The Craft of Functional Programming" and I found something I don't understand in page 185. It says: "Suppose first that we want to write a curried version of a function g, which is itself uncurried and of type (a,b) -> c. curry g This funtion expects its arguments as a pair, but its curried version, curry g, will take them separately - we therefore have to form them into a pair before applying g to them: curry :: ((a,b) -> c) -> (a -> b -> c) curry g x y = g (x,y) curry multiplyUC will be exactly the same function as multiply." OK, I have tried it and it works, but I don't understand the syntax for curry. Until now I have encountered only functions that take the same number of arguments as the function definition or less (partial application), but this syntax looks a bit new to me. curry is supposed to have as its argument one function of type (a,b) -> c and produce another function, but then the second line gives three arguments to curry, the function itself and the variables x and y. What I'm missing here? Thanks a lot, Ángel de Vicente -- http://www.iac.es/galeria/angelv/ High Performance Computing Support PostDoc Instituto de Astrofísica de Canarias --------------------------------------------------------------------------------------------- ADVERTENCIA: Sobre la privacidad y cumplimiento de la Ley de Protección de Datos, acceda a http://www.iac.es/disclaimer.php WARNING: For more information on privacy and fulfilment of the Law concerning the Protection of Data, consult http://www.iac.es/disclaimer.php?lang=en