sig
  type 'a t
  type 'a sv
  val const : 'a -> 'a Eliom_shared_sigs.S.t
  val value : 'a Eliom_shared_sigs.S.t -> 'a Eliom_shared_sigs.S.sv
  val map :
    ?eq:('b -> 'b -> bool) Eliom_shared_sigs.S.sv ->
    ('a -> 'b) Eliom_shared_sigs.S.sv ->
    'a Eliom_shared_sigs.S.t -> 'b Eliom_shared_sigs.S.t
  val fmap :
    ?eq:('b -> 'b -> bool) Eliom_shared_sigs.S.sv ->
    ('a -> 'b option) Eliom_shared_sigs.S.sv ->
    'b Eliom_shared_sigs.S.sv ->
    'a Eliom_shared_sigs.S.t -> 'b Eliom_shared_sigs.S.t
  val merge :
    ?eq:('a -> 'a -> bool) Eliom_shared_sigs.S.sv ->
    ('a -> 'b -> 'a) Eliom_shared_sigs.S.sv ->
    'a -> 'b Eliom_shared_sigs.S.t list -> 'a Eliom_shared_sigs.S.t
  val l2 :
    ?eq:('c -> 'c -> bool) Eliom_shared_sigs.S.sv ->
    ('a -> 'b -> 'c) Eliom_shared_sigs.S.sv ->
    'a Eliom_shared_sigs.S.t ->
    'b Eliom_shared_sigs.S.t -> 'c Eliom_shared_sigs.S.t
  val l3 :
    ?eq:('d -> 'd -> bool) Eliom_shared_sigs.S.sv ->
    ('a -> 'b -> 'c -> 'd) Eliom_shared_sigs.S.sv ->
    'a Eliom_shared_sigs.S.t ->
    'b Eliom_shared_sigs.S.t ->
    'c Eliom_shared_sigs.S.t -> 'd Eliom_shared_sigs.S.t
  val l4 :
    ?eq:('e -> 'e -> bool) Eliom_shared_sigs.S.sv ->
    ('a -> 'b -> 'c -> 'd -> 'e) Eliom_shared_sigs.S.sv ->
    'a Eliom_shared_sigs.S.t ->
    'b Eliom_shared_sigs.S.t ->
    'c Eliom_shared_sigs.S.t ->
    'd Eliom_shared_sigs.S.t -> 'e Eliom_shared_sigs.S.t
  val l5 :
    ?eq:('f -> 'f -> bool) Eliom_shared_sigs.S.sv ->
    ('a -> 'b -> 'c -> 'd -> 'e -> 'f) Eliom_shared_sigs.S.sv ->
    'a Eliom_shared_sigs.S.t ->
    'b Eliom_shared_sigs.S.t ->
    'c Eliom_shared_sigs.S.t ->
    'd Eliom_shared_sigs.S.t ->
    'e Eliom_shared_sigs.S.t -> 'f Eliom_shared_sigs.S.t
  val l6 :
    ?eq:('g -> 'g -> bool) Eliom_shared_sigs.S.sv ->
    ('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g) Eliom_shared_sigs.S.sv ->
    'a Eliom_shared_sigs.S.t ->
    'b Eliom_shared_sigs.S.t ->
    'c Eliom_shared_sigs.S.t ->
    'd Eliom_shared_sigs.S.t ->
    'e Eliom_shared_sigs.S.t ->
    'f Eliom_shared_sigs.S.t -> 'g Eliom_shared_sigs.S.t
  val switch :
    ?eq:('a -> 'a -> bool) Eliom_shared_sigs.S.sv ->
    'a Eliom_shared_sigs.S.t Eliom_shared_sigs.S.t ->
    'a Eliom_shared_sigs.S.t
  module Infix :
    sig
      val ( >|= ) :
        'a Eliom_shared_sigs.S.t ->
        ('a -> 'b) Eliom_shared_sigs.S.sv -> 'b Eliom_shared_sigs.S.t
      val ( =|< ) :
        ('a -> 'b) Eliom_shared_sigs.S.sv ->
        'a Eliom_shared_sigs.S.t -> 'b Eliom_shared_sigs.S.t
    end
  module Lwt :
    sig
      val map_s :
        ?eq:('b -> 'b -> bool) Eliom_shared_sigs.S.sv ->
        ('a -> 'b Lwt.t) Eliom_shared_sigs.S.sv ->
        'a Eliom_shared_sigs.S.t -> 'b Eliom_shared_sigs.S.t Lwt.t
      val l2_s :
        ?eq:('c -> 'c -> bool) Eliom_shared_sigs.S.sv ->
        ('a -> 'b -> 'c Lwt.t) Eliom_shared_sigs.S.sv ->
        'a Eliom_shared_sigs.S.t ->
        'b Eliom_shared_sigs.S.t -> 'c Eliom_shared_sigs.S.t Lwt.t
      val l3_s :
        ?eq:('d -> 'd -> bool) Eliom_shared_sigs.S.sv ->
        ('a -> 'b -> 'c -> 'd Lwt.t) Eliom_shared_sigs.S.sv ->
        'a Eliom_shared_sigs.S.t ->
        'b Eliom_shared_sigs.S.t ->
        'c Eliom_shared_sigs.S.t -> 'd Eliom_shared_sigs.S.t Lwt.t
      val l4_s :
        ?eq:('e -> 'e -> bool) Eliom_shared_sigs.S.sv ->
        ('a -> 'b -> 'c -> 'd -> 'e Lwt.t) Eliom_shared_sigs.S.sv ->
        'a Eliom_shared_sigs.S.t ->
        'b Eliom_shared_sigs.S.t ->
        'c Eliom_shared_sigs.S.t ->
        'd Eliom_shared_sigs.S.t -> 'e Eliom_shared_sigs.S.t Lwt.t
      val l5_s :
        ?eq:('f -> 'f -> bool) Eliom_shared_sigs.S.sv ->
        ('a -> 'b -> 'c -> 'd -> 'e -> 'f Lwt.t) Eliom_shared_sigs.S.sv ->
        'a Eliom_shared_sigs.S.t ->
        'b Eliom_shared_sigs.S.t ->
        'c Eliom_shared_sigs.S.t ->
        'd Eliom_shared_sigs.S.t ->
        'e Eliom_shared_sigs.S.t -> 'f Eliom_shared_sigs.S.t Lwt.t
      val l6_s :
        ?eq:('g -> 'g -> bool) Eliom_shared_sigs.S.sv ->
        ('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g Lwt.t) Eliom_shared_sigs.S.sv ->
        'a Eliom_shared_sigs.S.t ->
        'b Eliom_shared_sigs.S.t ->
        'c Eliom_shared_sigs.S.t ->
        'd Eliom_shared_sigs.S.t ->
        'e Eliom_shared_sigs.S.t ->
        'f Eliom_shared_sigs.S.t -> 'g Eliom_shared_sigs.S.t Lwt.t
      val merge_s :
        ?eq:('a -> 'a -> bool) Eliom_shared_sigs.S.sv ->
        ('a -> 'b -> 'a Lwt.t) Eliom_shared_sigs.S.sv ->
        'a -> 'b Eliom_shared_sigs.S.t list -> 'a Eliom_shared_sigs.S.t Lwt.t
    end
end