Basics concepts
Functional programming is composed of a few well-defined concepts. A short introduction of these concepts will follow and, later on, each concept will be covered in depth, in the next chapters.
First-class and higher-order functions
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 (String) -> String
; in other words...