On Tuesday, September 24, 2013 1:12:51 PM UTC+5:30, Jussi Piitulainen wrote: > rusi writes: > > > Without resorting to lambdas/new-functions: > > With functools.partial one can freeze any subset of a > > function(callable's) parameters. > > > > > In Haskell one can only freeze the first parameter or at most with > > a right section the second > > You have an f of type A -> B -> C -> D -> E in Haskell, you can freeze > the first three parameters by calling it with three arguments. These > are equivalent: > > f a b c d > (f a b c) d > (f a b) c d > (f a) b c d > > So it's any initial sequence of arguments, not just the first.
Agreed. I missed that. However as n increases there are n initial sequences (Haskell) whereas there are 2^n possible subsets (Python) (2^n - 1 if we remove the fully saturated case). So I would argue that Python syntax gives more flexibility in this direction than Haskell. Add the further feature of **args and its even more > > (I also think that the word "currying" used to refer to what Haskell > does and it's an extension to use it to mean any partial evaluation.) Hmm… Seems this is a contentious issue http://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_application which links to this LtU post that I find neat: --------------- If I have a function f:(x,y)->z, I can't apply it to only one of its arguments. I can curry it, turning it into a function g:x->(y->z) ... and I can apply g to only one of the original arguments. But turning f into g and applying g to some x are technically different things. I suspect the confusion arises because originally currying was a technique to model multiple-argument functions in a single-argument framework and was a meta-operation. In ML-like languages, the functions are typically already curried, so the only operation you see being done is partial application. --------------- from http://lambda-the-ultimate.org/node/2266 ------------- Anyways thanks for that Ive added it to my 'lost-booty' list http://blog.languager.org/2012/10/functional-programming-lost-booty.html#curry -- https://mail.python.org/mailman/listinfo/python-list