sig
  type ('a, 'b) t
  val empty : ('a, 'b) Seplist.t
  val cons_sep : '-> ('b, 'a) Seplist.t -> ('b, 'a) Seplist.t
  val cons_sep_alt : '-> ('b, 'a) Seplist.t -> ('b, 'a) Seplist.t
  val cons_entry : '-> ('a, 'b) Seplist.t -> ('a, 'b) Seplist.t
  val is_empty : ('a, 'b) Seplist.t -> bool
  val sing : '-> ('a, 'b) Seplist.t
  val hd : ('a, 'b) Seplist.t -> 'a
  val hd_sep : ('a, 'b) Seplist.t -> 'b
  val tl : ('a, 'b) Seplist.t -> ('a, 'b) Seplist.t
  val tl_alt : ('a, 'b) Seplist.t -> ('a, 'b) Seplist.t
  val tl_sep : ('a, 'b) Seplist.t -> ('a, 'b) Seplist.t
  val append :
    '-> ('b, 'a) Seplist.t -> ('b, 'a) Seplist.t -> ('b, 'a) Seplist.t
  val flatten : '-> ('b, 'a) Seplist.t list -> ('b, 'a) Seplist.t
  val to_list : ('a, 'b) Seplist.t -> 'a list
  val to_pair_list : '-> ('b, 'a) Seplist.t -> 'a option * ('b * 'a) list
  val from_pair_list :
    'a option -> ('b * 'a) list -> 'b option -> ('b, 'a) Seplist.t
  val from_pair_list_sym :
    'a option -> ('b * 'a) list -> 'b option -> ('a, 'b) Seplist.t
  val drop_first_sep : ('a, 'b) Seplist.t -> 'b option * ('a, 'b) Seplist.t
  val to_sep_list : ('-> 'b) -> ('-> 'b) -> ('a, 'c) Seplist.t -> 'b list
  type ('a, 'b) optsep = Optional | Require of '| Forbid of ('-> 'b)
  val to_sep_list_first :
    ('a, 'b) Seplist.optsep ->
    ('-> 'b) -> ('-> 'b) -> ('c, 'a) Seplist.t -> 'b list
  val to_sep_list_last :
    ('a, 'b) Seplist.optsep ->
    ('-> 'b) -> ('-> 'b) -> ('c, 'a) Seplist.t -> 'b list
  val to_list_map : ('-> 'b) -> ('a, 'c) Seplist.t -> 'b list
  val iter : ('-> unit) -> ('a, 'b) Seplist.t -> unit
  val from_list : ('a * 'b) list -> ('a, 'b) Seplist.t
  val from_list_prefix : '-> bool -> ('b * 'a) list -> ('b, 'a) Seplist.t
  val from_list_suffix : ('a * 'b) list -> '-> bool -> ('a, 'b) Seplist.t
  val from_list_default : '-> 'b list -> ('b, 'a) Seplist.t
  val length : ('a, 'b) Seplist.t -> int
  val map : ('-> 'b) -> ('a, 'c) Seplist.t -> ('b, 'c) Seplist.t
  val map_changed :
    ('-> 'a option) -> ('a, 'b) Seplist.t -> ('a, 'b) Seplist.t option
  val map_acc_right :
    ('-> '-> 'c * 'b) ->
    '-> ('a, 'd) Seplist.t -> ('c, 'd) Seplist.t * 'b
  val map_acc_left :
    ('-> '-> 'c * 'b) ->
    '-> ('a, 'd) Seplist.t -> ('c, 'd) Seplist.t * 'b
  val fold_right : ('-> '-> 'b) -> '-> ('a, 'c) Seplist.t -> 'b
  val fold_left : ('-> '-> 'b) -> '-> ('a, 'c) Seplist.t -> 'b
  val for_all : ('-> bool) -> ('a, 'b) Seplist.t -> bool
  val exists : ('-> bool) -> ('a, 'b) Seplist.t -> bool
  val find : '-> ('-> bool) -> ('b, 'a) Seplist.t -> 'b * 'a
  val pp :
    (Format.formatter -> '-> unit) ->
    (Format.formatter -> '-> unit) ->
    Format.formatter -> ('a, 'b) Seplist.t -> unit
  val replace_all_seps :
    ('-> 'a) -> ('b, 'a) Seplist.t -> ('b, 'a) Seplist.t
end