Higher Order Functions¶
In Felix, functions are first class which means a function can be used as a value. A function which accepts another function as a parameter, or returns a function as a result, is called a higher order function, abbreviated to HOF.
Here’s an example:
fun twice (x:int):int => x + x; fun thrice (x:int):int => x + x + x; fun paired (f:int->int, a:int, b:int) => f a, f b ; println$ paired (twice,2,3); println$ paired (thrice,2,3);
Here, the function twice is passed as an argument to paired, binding to the parameter f, which is then applies to the arguments a and b to obtain the final result.
Then, we do it again, this time passing thrice instead.