I'm trying to learn more about functional programming. This is the third in a series of posts about functional programming concepts with examples in Scala (and in some cases other languages too).
Partial Functions
A partial function is a function only valid over a specific range. Some functions are not valid for all input values, like asymptotic functions or those only applicable to natural numbers.
Partially Applied Functions
A partially applied function is an expression in which you don’t supply all of the arguments needed by the function.
Currying
A curried function is applied to multiple argument lists. The results are chained together. In this simple example, the 2 would be applied to x + y resulting in 2 + y. Then the 3 is applied resulting in 5.
This technique can be used to make method calls look more like native-language support. Here is a non-trivial example from Programming in Scala:
Notes
Partial functions and partially applied functions are not related, except the names are almost the same. I was confused about this when I started to research this post.
The call to partially applied functions returns immediately. Curried functions return another function in the currying chain.