Earlier quoted context omitted.
Neither of your examples does curry a function. The first one partially applies it (the Haskell way), the second one wraps the partial application in a redundant lambda (Haskell again). I think that's where the confusion is, let me also try to use the Haskell syntax... This is an add function with two arguments: add :: (Int, Int) -> Int add (x, y) = x + y At the moment it can not be partially applied, so let's curry…
Coming back to this having spent a wonderful day outdoors. Okay, writing this in Python because a) it's been a while since I wrote Haskell, b) it will let other readers read the code more easily, and c) Python clearly denotes what a partial is by having a `partial` function: from inspect import signature from functools import partial def curry(f, parameters=None): if parameters is None: parameters = list(signature(f)…
Do you think that makes your statement "Currying is a subset of partial application" (and doubling down on that) any more true?
After all, you can implement subtraction with just the help of addition and multiplication:
add :: Int -> Int -> Int
add a b = a + b
mult :: Int -> Int -> Int
mult a b = a * b
sub :: Int -> Int -> Int
sub a b = add a (mult (-1) b)
So, does that make "subtraction is a subset of addition" a true statement?