Higher-order functions are functions that operate on other functions, taking functions as arguments or output functions as return values.
So f sub n is a higher order function
A function is also a data type that can also be passed as an argument to another argument. The most typical is as a callback function.
A function can also be passed back as a return value