Функтор (функциональное программирование) - Functor (functional programming)

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

Эта идея закодирована в Haskell с помощью тип класс

учебный класс Функтор ж куда  fmap :: (а -> б) -> ж а -> ж б

с условиями, названными законы функторов

fmap я бы = я быfmap (грамм . час) = (fmap грамм) . (fmap час)

В Scala высшие родственные типы используются

черта Функтор[F[_]] {  def карта[А,B](а: F[А])(ж: А => B): F[B]}

Простыми примерами этого являются типы Option и collection. Функторы очень полезны при моделировании функциональные эффекты для применения функции к вычислениям, которые еще не завершены.

Функторы образуют основу для более сложных абстракций, таких как Аппликативный, Монада, Комонада.

В C ++ имя функтор относится к функциональный объект вместо этого определения.

внешняя ссылка