Doc Comments /
Tuples
Comments
Add your comments here...
That's not Currying
Actually they call it "partial function application"Currying is something else often mistaken for partial evaluation.
Currying is treating a function of N args that returns Ret
func: (Arg1,Arg2,Arg3) -> Ret
as a function that does partial application of arguments "to the max"
func: Arg1 -> (Arg2 -> (Arg3 -> Ret))
That's a
function that takes an Arg1 and returns
(a function that takes an Arg2 and returns
(a function that takes an Arg3 and returns a Ret))
So the call func a b c is treated as (((func a) b ) c) with currying. In ML for instance, all functions are curried by default (but you can sort of override the behavior by declaring your function to take a tuple as a single argument). Python has a partial application library that was originally called 'curry' until the functional folks shot it down as a misnomer. Now it's called 'partial'.
Links
Corresponding page in the D Specification