Жаргон функционального программирования
тред ⬇️

(Возможно кому-то поможет на собеседовании)
Arity (арность)

Количество аргументов функции. От слов унарный, бинарный, тернарный (unary, binary, ternary) и так далее. Это необычное слово, потому что состоит из двух суффиксов: "-ary" и "-ity.".
Higher-Order Functions (функции высокого порядка)

Функция, которая принимает функцию в качестве аргумента и/или возвращает функцию.
Partial Application (частичное применение)

Частичное применение функции означает создание новой функции с пред-заполнением некоторых аргументов оригинальной функции.
Currying (каррирование)

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

При каждом вызове она принимает один аргумент и возвращает функцию, принимающую один аргумент до тех пор, пока все аргументы не будут обработаны.
Auto Currying (автоматическое каррирование)
Трансформация ф-ии, принимающей несколько арг-в, в новую, если передать меньшее чем предусмотрено кол-во арг-в, то она вернет ф-ию, которая принимает оставшиеся аргументы. Если ф-ия получает правильное кол-во арг-в, то она исполняется
Function Composition (композиция функций)

Соединение двух функций для формирования новой функции, в которой вывод первой функции является вводом второй.
Purity (чистота)

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

У функции есть побочные эффекты если кроме возврата значения она взаимодействует (читает или пишет) с внешним изменяемым состоянием.
Idempotent (идемпотентность)

Функция является идемпотентной если повторное ее исполнение производит такой же результат.
Point-Free Style (бесточечная нотация)

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

Предикат — это функция, которая возвращает true или false в зависимости от переданного значения. Распространенный случай использования предиката — функция обратного вызова (callback) для фильтра массива.
Categories (категории)

Объекты с функциями, которые подчиняются определенным правилам. Например, моноиды.
Value (значение)

Все, что может быть присвоено переменной.
Constant (константа)

Переменная, которую нельзя переназначить после определения.
Константы обладают референциальной прозрачностью или прозрачностью ссылок (referential transparency). То есть, их можно заменить значениями, которые они представляют, и это не повлияет на результат
Functor (функтор)

Объект, который реализует функцию map, которая при проходе по всем значениям в объекте создает новый объект, и подчиняется двум правилам:
- сохраняет нейтральный элемент (identity)
- поддерживает композицию
Pointed Functor (указывающий функтор)

Объект с функцией of с любым значением. В ES2015 есть Array.of, что делает массивы указывающим функтором.
Lift

Lifting — это когда значение помещается в объект вроде функтора. Если "поднять" (lift) функцию в аппликативный функтор, то можно заставить ее работать со значениями, которые также присутствуют в функторе.
Referential Transparency (прозрачность ссылок)

Если выражение можно заменить его значением без влияния на поведение программы, то оно обладает прозрачностью ссылок.
Lambda (лямбда)

Анонимная функция, которую можно использовать как значение.
(Лямбды часто передают в качестве аргументов в функции высокого порядка. Лямбду можно присвоить переменной.)
Lambda Calculus (лямбда-исчисление)

Область информатики, в которой функции используются для создания универсальной модели исчисления.
Lazy evaluation (ленивые вычисления)

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

Объект с функцией, которая "комбинирует" объект с другим объектом того же типа.
Monad (монада)

Монада — это объект с функциями of и chain. chain похож на map, но он производит разложение вложенных объектов в результате.
Comonad (комонада)

Объект с функциями extract и extend.
Extract берет значение из функтора.

Extend выполняет функцию на комонаде. Функция должна вернуть тот же тип, что комонада.
Applicative Functor (аппликативный функтор)

Объект с функцией ap. ap применяет функцию в объекте к значению в другом объекте того же типа.
Это полезно, когда есть два объекта, и нужно применить бинарную операцию на их содержимом.
Morphism (морфизм)

Функция трансформации.
Endomorphism (эндоморфизм)

Функция, у которой ввод и вывод — одного типа.
Isomorphism (изоморфизм)

Пара структурных трансформаций между двумя типами объектов без потери данных.

Например, двумерные координаты можно хранить в массиве [2,3] или объекте {x: 2, y: 3}.
Setoid

Объект, у которого есть функция equals, которую можно использовать для сравнения объектов одного типа.
Semigroup (полугруппа)

Объект с функцией concat, которая комбинирует его с другим объектом того же типа.
Foldable

Объект, в котором есть функция reduce, которая трансформирует объект в другой тип.
Type Signatures (сигнатуры типа)

Часто функции в JavaScript содержат комментарии с указанием типов их аргументов и возвращаемых значений.
// functionName :: firstArgType -> secondArgType -> returnType
Union type (тип-объединение)

Комбинация двух типов в один, новый тип.
Option (опцион)

Тип-объединение с двумя случаями: Some и None. Полезно для композиции функций, которые могут не возвращать значения.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Басист Аксель

Басист Аксель Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(