Функции высшего порядка- функции, принимающие другую функцию как аргумент или возвращающие функцию (например, map, filter).
Функции первого класса(first-class functions)- функция, у которой есть возможность быть объявленной в виде переменной, что позволяет управлять ей как обычным типом данных и в тоже время исполнять её. ЯП имеет функцию первого класса, если он рассматривает функции как объекты первого класса.
Чистая функция- функция, которая:
- при одинаковых аргументах всегда возвращает одни и те же значения
- не имеет видимых побочных эффектов, т.е. не изменяет какое либо состояние за пределами ее области видимости и не оказывает видимого воздействия на внешний мир, кроме возвращения значения
Побочный эффект- это изменение состояния системы или заметное взаимодействие с окружающим "миром", которое происходит во время вычисления результата.
Например:
- изменение в файловой ситсеме
- вставка в БД
- выполнение http запроса
- мутации
- вывод на экран / запись в лог
- получение данных от пользователя
- выполение запроса к DOM
- получение доступа к состоянию системы
Детерминировання функция- всегда возвращает одинаковые значения при определенном вводе (аргументы) (чистая функция)
Недетерминированная фнукция- не всегда будут возвращать одинаковые значения (например, генератор случайных чисел)
Предикат - это функция, которая возвращает true или false в зависимости от переданного значения