Функциональное программирование

Содержание

Глоссарий

Важные понятия

Функциональное программирование — модель программирования, рассматривающая процесс вычисления как определение функций и их приложение к аргументам.

В основе функционального программирования лежит математическая модель, называемая лямбда-исчислением.

Функциональное программирование — это программирование с помощью функций. Функции являются структурным элементом программы. Для них характерны полнота, функциональность и отсутствие эффектов.

Полная функция справедлива абсолютно для всех элементов области определения (или иначе — домена). Не может быть какого-либо элемента из множества области определения, для которого некоторая функция не давала бы результата из области значений. Примером неполноты может служить функция деления, для которой не существует значения из области значений в случае, если делителем является число ноль.

Функциональность (прозрачность по ссылкам) предполагает независимость результата приложения функции от чего бы то ни было, кроме как от аргумента, переданного данной функции. Примером нефункциональности может служить зависимость результата от текущего состояния глобальных данных.

Типы являются средством упорядочивания полиморфных значений.

Типы могут являться одной из форм спецификации, то есть средством определения требований. В этой связи, контролёр типов выступает в качестве инструмента проверки действительности предложенной реализации.

Глоссарий

comprehension

включение

immediate/strict/eager and delayed/lazy evaluation

безотлагательное/прямое/жадное и отложенное/ленивое вычисление

last/tail call optimization

оптимизация завершающего вызова

referential transparency

функциональность

type-driven development

разработка через определение типов

Важные понятия

полнота

Свойство функции возвращать значение из области значений, абсолютно для любого аргумента из области определения.

функциональность

Зависимость результата функции исключительно от значения аргумента.

эффект

Это результат любого действия, не связанного с преобразованием входной величины.