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
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
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 andzero
is both a left and right unit forplus
end
) ->
S
with type 'a t = Monoid.t