Scala higher-order functions
A higher-order function either takes other functions as arguments or returns a function as its result.
We can use this example script:
def squared(x: Int): Int = x * x def cubed(x: Int): Int = x * x * x def process(a: Int, processor: Int => Int): Int = {processor(a) } val fiveSquared = process(5, squared) val sevenCubed = process(7, cubed)
We define two functions; one squares the number passed and the other cubes the number passed.
Next, we define the higher-order function that takes the number to work on and the processor to apply.
Lastly, we call each one. For example, we call process() with 5 and the squared() function. The process() function passes the 5 to the squared() function and returns the result:

We take advantage of the Scala's engine automatically printing out variable values to see the result expected.