
On Mon, 2007-08-27 at 16:29 +0200, Peter Verswyvelen wrote:
A while ago I confused "currying" with "partial application", which was pointed out by members of this community, and the wiki pages got adapted so that newbies like me don't make the same mistake twice ;) That's great.
Anyway, at the risk of making mistakes again, I'm looking for good terminilogy when talking about "partial application".
For example:
-- uncurried form *f (x,y)* = -- whatever
-- curried form *g x y *= f (x,y)
-- partial application *h x *= g x
But when writing text documents, I guess it is common to say "/g is curried/", but is it also common to say /"g is partially applied"? /The latter sounds silly to a non-native speaker like myself... Or shouldn't it be?
g -is- curried, just period, i.e. that is a property of g itself. g is partially applied to x in h or (g x) is a partial application, i.e. this is a property of a particular application. g is applied to x would also be fine since there is rarely much value in making a distinction between application and partial application at the level of programming (in Haskell at least). You do seem to have a good grasp on the terminology.
/And what is "application"? I guess it means that (g x y) is internally translated to ((g $ x) $ y) which is translated into (apply (apply g x) y) where apply is a primitive function?
Yes, application is what you do when you "call" a function with arguments. The side step through ($) is unnecessary, ($) is nothing special.