sig
  type 'a t
  val return : '-> 'Applicative_intf.S.t
  val apply :
    ('-> 'b) Applicative_intf.S.t ->
    'Applicative_intf.S.t -> 'Applicative_intf.S.t
  val map :
    'Applicative_intf.S.t -> f:('-> 'b) -> 'Applicative_intf.S.t
  val map2 :
    'Applicative_intf.S.t ->
    'Applicative_intf.S.t -> f:('-> '-> 'c) -> 'Applicative_intf.S.t
  val map3 :
    'Applicative_intf.S.t ->
    'Applicative_intf.S.t ->
    'Applicative_intf.S.t ->
    f:('-> '-> '-> 'd) -> 'Applicative_intf.S.t
  val all : 'Applicative_intf.S.t list -> 'a list Applicative_intf.S.t
  val both :
    'Applicative_intf.S.t ->
    'Applicative_intf.S.t -> ('a * 'b) Applicative_intf.S.t
  module Applicative_infix :
    sig
      val ( <*> ) :
        ('-> 'b) Applicative_intf.S.t ->
        'Applicative_intf.S.t -> 'Applicative_intf.S.t
      val ( <* ) :
        'Applicative_intf.S.t ->
        unit Applicative_intf.S.t -> 'Applicative_intf.S.t
      val ( *> ) :
        unit Applicative_intf.S.t ->
        'Applicative_intf.S.t -> 'Applicative_intf.S.t
    end
  val ( <*> ) : ('-> 'b) t -> 'a t -> 'b t
  val ( <* ) : 'a t -> unit t -> 'a t
  val ( *> ) : unit t -> 'a t -> 'a t
end