Module Std_kernel.Applicative

module Applicative: Applicative

include Applicative_intf
module Make: 
functor (X : Basic) -> S with type 'a t := 'a X.t
module Make2: 
functor (X : Basic2) -> S2 with type ('a, 'e) t := ('a, 'e) X.t
module Make_args: 
functor (X : S) -> Args with type 'a 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 'a 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
type t 
val zero : t
val plus : t -> t -> t
Laws: plus is associative and zero is both a left and right unit for plus
end) -> S with type 'a t = Monoid.t
Every monoid gives rise to a constant Applicative.