Currying and Partial Functions
Currying transforms a function with multiple parameters into a series of functions with a single parameter.
Currying
def multiply(x: Int)(y: Int): Int = x * y
val timesTwo = multiply(2)_
println(timesTwo(3)) // 6
Partial Functions
val squareRoot: PartialFunction[Double, Double] = {
case x if x >= 0 => math.sqrt(x)
}
println(squareRoot.isDefinedAt(-1)) // false