Функции высокого порядка (high order function) - это функции, которые либо принимают функцию в качестве параметра, либо возвращают функцию, либо и то, и другое. Тип функции Для определения функций высокого порядка прежде всего необходимо представлять, что такое тип функции. Тип функции определяется следующим образом: Например, возьмем следующее лямбда-выражение: Это лямбда-выражение принимает в качестве параметра строку и формально ничего не возвращает (точнее возвращаемым типом является Unit) Поэтому тип этого выражения будет следующий: Другой пример: лямбда-выражение принимает два числа и возвращает их сумму: Это выражение будет иметь следующий тип: Если лямбда-выражение не принимает никаких параметров, то указываются пустые скобки: К примеру, этому типу будет соответствовать лямбда-выражение {println("hello")} При определении лямбда-выражения и присвоении его переменной мы можем явным образом у этой переменной указать тип: Правда, в данном случае тип можно не указывать, так как ком