Функтор (функциональное программирование) - Functor (functional programming)
В функциональное программирование, а функтор это шаблон дизайна вдохновлен определение из теории категорий, что позволяет общий тип применить функция внутри без изменения структуры универсального типа.
Эта идея закодирована в Haskell с помощью тип класс
учебный класс Функтор ж куда fmap :: (а -> б) -> ж а -> ж б
с условиями, названными законы функторов
fmap я бы = я быfmap (грамм . час) = (fmap грамм) . (fmap час)
В Scala высшие родственные типы используются
черта Функтор[F[_]] { def карта[А,B](а: F[А])(ж: А => B): F[B]}
Простыми примерами этого являются типы Option и collection. Функторы очень полезны при моделировании функциональные эффекты для применения функции к вычислениям, которые еще не завершены.
Функторы образуют основу для более сложных абстракций, таких как Аппликативный, Монада, Комонада.
В C ++ имя функтор относится к функциональный объект вместо этого определения.