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