Содержание
Функциональное программирование — модель программирования, рассматривающая процесс вычисления как определение функций и их приложение к аргументам.
В основе функционального программирования лежит математическая модель, называемая лямбда-исчислением.
Функциональное программирование — это программирование с помощью функций. Функции являются структурным элементом программы. Для них характерны полнота, функциональность и отсутствие эффектов.
Полная функция справедлива абсолютно для всех элементов области определения (или иначе — домена). Не может быть какого-либо элемента из множества области определения, для которого некоторая функция не давала бы результата из области значений. Примером неполноты может служить функция деления, для которой не существует значения из области значений в случае, если делителем является число ноль.
Функциональность (прозрачность по ссылкам) предполагает независимость результата приложения функции от чего бы то ни было, кроме как от аргумента, переданного данной функции. Примером нефункциональности может служить зависимость результата от текущего состояния глобальных данных.
Типы являются средством упорядочивания полиморфных значений.
Типы могут являться одной из форм спецификации, то есть средством определения требований. В этой связи, контролёр типов выступает в качестве инструмента проверки действительности предложенной реализации.
Глоссарий
comprehension
включение
immediate/strict/eager and delayed/lazy evaluation
безотлагательное/прямое/жадное и отложенное/ленивое вычисление
last/tail call optimization
оптимизация завершающего вызова
referential transparency
функциональность
type-driven development
разработка через определение типов
Важные понятия
полнота
Свойство функции возвращать значение из области значений, абсолютно для любого аргумента из области определения.
функциональность
Зависимость результата функции исключительно от значения аргумента.
эффект
Это результат любого действия, не связанного с преобразованием входной величины.