In functional programming, what does this signature means:
def partial1[A,B,C](a: A, f: (A,B) => C): B => C
What I understand is that ‘partial1’ takes an argument of type A, and a function which takes arguments of type A and B, and returns type C.
But what does ‘B => C’ implies here?
1 Like
It means partial1
returns a function that takes a B
and returns a C
. It implies that partial1
partially applies the function f
with argument a
.
1 Like
Actually, there is only one pure function def f[A,B,C](a: A, ab2c: (A,B) => C): B => C
for all A
, B
and C
. Try thinking of another one, you will need some specific knowledge of A
, B
or C
to define it.
1 Like
The signature as a whole means, 'If you give me an A
, then if you give me a function which can get a C
from an A
and a B
, then I can give you back a function which can get a C
from a B
'.
Note that I can’t give you back a C
directly because I don’t have enough information; I am missing one piece of information, that is a B
. So, I can invert the dependency: I can give you back a recipe for getting a C
, but only if you supply the B
.
Does that make sense?
3 Likes