АппликацияПонятие представляетФункторс возможностью поднятия значений и комбинирования вычислений.
А.Функторможет взять нормальную функцию и сопоставить ее со структурой, содержащей значения, для получения новой структуры, содержащей значения. ИнтуитивноApplicativeтакже может принимать значение и поднимать его в структуру. Кроме того,Applicativeможет взять структуру, содержащую функции, и применить ее к структуре, содержащей значения, чтобы получить новую структуру, содержащую значения. Путем карривания функции (функций) внутри структуры можно также применять n-арные функции к n структурам, содержащим значения.
Note
This documentation does not go into much details about the nature of applicatives. However, the Typeclassopedia is a nice Haskell-oriented resource where such information can be found.
Minimal complete definition
приподнятьиапудовлетворяющие нижеприведенным законам.Прикладнойтакже должен бытьФунктор.
Laws
При наличииПрименимогоFдолжны соблюдаться следующие законы:
, гдеapply(-, x)обозначает частичное применение функцииapplyот модуляФункциональногодо аргументаx. where apply(-, x) denotes the partial application of the apply function from the Functional module to the x argument.[ORIG_END] -->
Вследствие этих законов модельFunctorдляFудовлетворяет следующим для всех объектовxsметкиF(A)и функций \(f : A \to B \):
прикладное преобразованиеявляется функцией \(t : F(X) \to G(X) \) между двумя прикладнымиFиG, гдеXможет быть любой метки, и которая сохраняет операции прикладного. Другими словами, для всех объектовxметкиX, функций в приложении \(fs : F(X \to Y) \) и объектовxsметкиF(X),
Lifted application.Specifically, ap applies a structure containing functions to a structure containing values, and returns a new structure containing values. The exact way in which the functions are applied to the values depends on the Applicative. More...
Lift a value into an Applicative structure.lift<A> takes a normal value and embeds it into a structure whose shape is represented by the AApplicative. Note that the value may be a function, in which case the created structure may be applied to another Applicative structure containing values. More...
Поднята заявка. В частности,apприменяет структуру, содержащую функции, к структуре, содержащей значения, и возвращает новую структуру, содержащую значения. Точный способ применения функций к значениям зависит отApplicative.
apможет быть вызван с двумя аргументами или более; функции в структуреfпрокручиваются и затем применяются к значениям в каждомx...структура с использованием двоичной формыap. Заметим, что для этого требуется числох...должно соответствовать порядковости функций в структуреf. Иными словами,ap(f, x1, ..., xN)эквивалентно
((f' <ap> x1) <ap> x2) ... <ap> xN
гдеf'—f, но вместо этого содержит карридированные функции, аxy— всего лишьap(x, y), написанный в инфиксированной нотации, чтобы подчеркнуть левую ассоциативность.
Поднимите значение в структуруApplicative.лифтпринимает нормальное значение и встраивает его в структуру, форма которой представленаAApplicative. Обратите внимание, что значение может быть функцией, и в этом случае созданная структура может бытьapперенесена на другуюПрикладнуюструктуру, содержащую значения.
Signature
При наличии приложенияAподпись \(\mathtt{lift}_A : T \to A(T)\).
Template Parameters
A
Тег, представляющийApplicative, в который поднимается значение.
Parameters
x
Значение, чтобы поднять в приложение.
Example
// Copyright Louis Dionne 2013-2016
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
Статья Boost.Hana: Applicative раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.