FP (RU) Flashcards
Хвостовая рекурсия
Частный случай рекурсии, при котором любой рекурсивный вызов является последней операцией перед возвратом из функции.
Замыкание
Функция, которая ссылается на свободные переменные в своей области видимости.
Свободная переменная
Переменная, которая встречается в теле функции, но не является параметром этой функции.
Линеаризация
Механизм определения линейного пути обхода предков класса включая как обычные суперклассы, так трэйты.
Функтор
Абстракция, которая описывает возможность отображения одного типа в другой, с сохранением структуры эффекта, в контексте которого выполняется это отображение.
Apply
Это функтор, который позволяет объединять 2 функциональных эффекта в один, с сохранением результатов успешного выполнения обоих, в виде тапла.
Applicative
Это Apply, который позволяет конвертировать значение в успешный функциональный эффект.
Монада
Applicative, который позволяет формировать цепочку контекстно зависимых вычислений, где каждое следующее вычисление может зависеть от результатов предыдущих и менять внутреннюю структуру функционального эффекта.
Полугруппа
Абстракция множества с определенной на нём ассоциативной бинарной операцией. Может иметь нейтральный элемент.
Моноид
Полугруппа с нейтральным элементом.
Трамполирование
Техника, которая позволяет сделать рекурсивную функцию стекобезопасной, когда хвостовая рекурсия не может быть реализована “в лоб”.
Алгебраический тип данных
Тип данных, сформированный из других типов, при помощи 2х алгебраических операций - всем хорошо известных - сумма и произведение.
Тип сумма
ADT, множество возможных значений которого есть закрытое перечисление типов, которым он может принадлежать. Т.е. если ADT определяется как сумма типов A и B, то экземпляр такого ADT может относиться либо к типу A, либо к типу B.
Тип произведение
ADT, множество возможных значений которого есть декартово произведение всех возможных значений типов, из которых состоит этот ADT. Примерами таких типов являются таплы, да и вообще любые рекорды.