In book ‘Functional Programming In Scala’, following function is to be implemented :
def partial1[A,B,C](a: A, f: (A,B) => C): B => C
My implementation is as follows
def partial1[A,B,C](a: A, f: (A,B) => C): B => C = {
val g = (b: B) => f(a, b)
g
}
Book states that the function is called partial as it is being applied to some but not all of its required
arguments.
I am not able to relate this statement to the implementation above.
Is implementation wrong?
Your implementation is right (though though some unnecessary ceremony: for any
val foo = x
foo
you can just write x
, so you can replace
val g = (b: B) => f(a, b)
g
with (b: B) => f(a, b)
)
Also note that usually a “partially applied” function is something other than a partial function.
partial1
partially applies the function: given a function f: (A, B) => C, the method partial1 uses argument a to partially apply f, so that you now get a function that still needs to be applied to some B (but no longer to some A)
2 Likes
So basically a call to partial1 gives a function which has been restricted to a particular value of A, hence the name.