Аппликативный оператор
Аппликативный оператор — центральная операция в концепции аппликативных функторов, которая применяется в порядке функционального программирования. Он позволяет применять функции, находящиеся в некотором вычислительном контексте, к значениям в том же контексте, сохраняя при этом структуру контекста.
Описание[править]
Формально аппликативный функтор — сильный лаксовый моноидальный функтор между моноидальной категорией и категорией эндофункторов. Он сохраняет не только структуру функтора, но и моноидальную структуру (тензорное произведение) с некоторым ослаблением.
В терминах Haskell это выражается через типкласс Applicative, введённый в библиотеке Control.Applicative.
Аппликативный оператор иногда называют ap (сокращённо от слова аппликация), поскольку в модуле Control.Monad существует функция ap :: Monad m => m (a -> b) -> m a -> m b, которая совпадает с <*> для монад.
Аппликативные функторы слабее монад, они позволяют комбинировать независимые вычисления параллельно, но не дают доступа к значению внутри контекста для точного принятия решений. Любая монада является аппликативным функтором (через pure = return и <*> = ap), но не наоборот.
Такой стиль предпочтителен в случаях, когда эффекты независимы, он более предсказуем и часто эффективнее.