As a **Higher order functions** In Kotlin, those functions are called that other functions accept as parameters or deliver functions as results. They are an important part of functional programming and offer greater flexibility and abstraction when developing programs.

Below are some examples of higher order functions in Kotlin.

**Example 1: Function as a parameter**

In this example, function is called **calculating** defined, the two **Int**-arguments **a** and **b** as well as a function **mathOperation** with the same argument types and a** Int**-Return type expected.

The functions **addNumbers** and **subtractNumbers** are simple functions that accept two integers as parameters and return their sum or difference.

Within the **main()**-Function becomes the function **calculating** called twice. The first time the function is called **addNumbers** as an argument using the reference operator **::** pass the two numbers **10** and **2** to add. The reference operator **::** also called a “member reference operator” and is used to reference a function or object without executing it directly. The second time the function is called **subtractNumbers** Passed as argument to the two numbers **10** and **2** to subtract.

**Example 2: Function as return value**

In this example the function returns **createMathOperation** returns a function based on the passed string **chosenOperation** based. The resulting functions **add** and **abstract** can then be used to perform calculations.

Higher-order functions are widely used in Kotlin and make it possible to develop flexible and abstract solutions to various problems.