The most foundational concept of functional programming is first-class functions. A programming language with support for first-class functions will treat functions as any other type; such languages will allow you to use functions as variables, parameters, returns, generalization types, and so on. Speaking of parameters and returns, a function that uses or returns other functions is a higher-order function.
Kotlin has support for both concepts.
Let's try a simple function (in Kotlin's documentation this kind of function is named lambda):
val capitalize = { str: String -> str.capitalize() }fun main(args: Array<String>) { println(capitalize("hello world!"))}
The capitalize lambda function is of type