Module Base.Applicative

module Make : functor (X : Basic) -> S with type t := a X.t
module Make2 : functor (X : Basic2) -> S2 with type (a, e) t := (a, e) X.t
module Make_using_map2 : functor (X : Basic_using_map2) -> S with type t := a X.t
module Make2_using_map2 : functor (X : Basic2_using_map2) -> S2 with type (a, e) t := (a, e) X.t
module Make_args : functor (X : S) -> Args with type arg := a X.t
module Make_args2 : functor (X : S2) -> Args2 with type (a, e) arg := (a, e) X.t

The following functors give a sense of what Applicatives one can define.

Of these, Of_monad is likely the most useful. The others are mostly didactic.

module Of_monad : functor (M : Monad.S) -> S with type t := a M.t

Every monad is Applicative via:

module Compose : functor (F : S) -> functor (G : S) -> S with type 'a t = 'a F.t G.t
module Pair : functor (F : S) -> functor (G : S) -> S with type 'a t = 'a F.t * 'a G.t
module Const : functor (Monoid : sig ... end) -> S with type 'a t = Monoid.t

Every monoid gives rise to a constant Applicative.