sig
  type 'a t = 'a list
  val length : 'Blist.t -> int
  val hd : 'Blist.t -> 'a
  val tl : 'Blist.t -> 'Blist.t
  val nth : 'Blist.t -> int -> 'a
  val rev : 'Blist.t -> 'Blist.t
  val append : 'Blist.t -> 'Blist.t -> 'Blist.t
  val rev_append : 'Blist.t -> 'Blist.t -> 'Blist.t
  val concat : 'Blist.t Blist.t -> 'Blist.t
  val flatten : 'Blist.t Blist.t -> 'Blist.t
  val iter : ('-> unit) -> 'Blist.t -> unit
  val iteri : (int -> '-> unit) -> 'Blist.t -> unit
  val map : ('-> 'b) -> 'Blist.t -> 'Blist.t
  val mapi : (int -> '-> 'b) -> 'Blist.t -> 'Blist.t
  val rev_map : ('-> 'b) -> 'Blist.t -> 'Blist.t
  val fold_left : ('-> '-> 'a) -> '-> 'Blist.t -> 'a
  val fold_right : ('-> '-> 'b) -> 'Blist.t -> '-> 'b
  val iter2 : ('-> '-> unit) -> 'Blist.t -> 'Blist.t -> unit
  val map2 : ('-> '-> 'c) -> 'Blist.t -> 'Blist.t -> 'Blist.t
  val rev_map2 : ('-> '-> 'c) -> 'Blist.t -> 'Blist.t -> 'Blist.t
  val fold_left2 :
    ('-> '-> '-> 'a) -> '-> 'Blist.t -> 'Blist.t -> 'a
  val fold_right2 :
    ('-> '-> '-> 'c) -> 'Blist.t -> 'Blist.t -> '-> 'c
  val for_all : ('-> bool) -> 'Blist.t -> bool
  val exists : ('-> bool) -> 'Blist.t -> bool
  val for_all2 : ('-> '-> bool) -> 'Blist.t -> 'Blist.t -> bool
  val exists2 : ('-> '-> bool) -> 'Blist.t -> 'Blist.t -> bool
  val mem : '-> 'Blist.t -> bool
  val memq : '-> 'Blist.t -> bool
  val find : ('-> bool) -> 'Blist.t -> 'a
  val filter : ('-> bool) -> 'Blist.t -> 'Blist.t
  val find_all : ('-> bool) -> 'Blist.t -> 'Blist.t
  val partition : ('-> bool) -> 'Blist.t -> 'Blist.t * 'Blist.t
  val assoc : '-> ('a * 'b) Blist.t -> 'b
  val assq : '-> ('a * 'b) Blist.t -> 'b
  val mem_assoc : '-> ('a * 'b) Blist.t -> bool
  val mem_assq : '-> ('a * 'b) Blist.t -> bool
  val remove_assoc : '-> ('a * 'b) Blist.t -> ('a * 'b) Blist.t
  val remove_assq : '-> ('a * 'b) Blist.t -> ('a * 'b) Blist.t
  val split : ('a * 'b) Blist.t -> 'Blist.t * 'Blist.t
  val combine : 'Blist.t -> 'Blist.t -> ('a * 'b) Blist.t
  val sort : ('-> '-> int) -> 'Blist.t -> 'Blist.t
  val stable_sort : ('-> '-> int) -> 'Blist.t -> 'Blist.t
  val fast_sort : ('-> '-> int) -> 'Blist.t -> 'Blist.t
  val sort_uniq : ('-> '-> int) -> 'Blist.t -> 'Blist.t
  val merge : ('-> '-> int) -> 'Blist.t -> 'Blist.t -> 'Blist.t
  val empty : 'Blist.t
  val is_empty : 'Blist.t -> bool
  val singleton : '-> 'Blist.t
  val to_string : string -> ('-> string) -> 'Blist.t -> string
  val pp :
    (Format.formatter -> unit -> unit) ->
    (Format.formatter -> '-> unit) ->
    Format.formatter -> 'Blist.t -> unit
  val equal : ('-> '-> bool) -> 'Blist.t -> 'Blist.t -> bool
  val of_list : 'a list -> 'Blist.t
  val to_list : 'Blist.t -> 'a list
  val cons : '-> 'Blist.t -> 'Blist.t
  val decons : 'Blist.t -> 'a * 'Blist.t
  val foldl : ('-> '-> 'a) -> '-> 'Blist.t -> 'a
  val foldr : ('-> '-> 'b) -> 'Blist.t -> '-> 'b
  val bind : ('-> 'Blist.t) -> 'Blist.t -> 'Blist.t
  val rev_filter : ('-> bool) -> 'Blist.t -> 'Blist.t
  val map_to : ('-> '-> 'b) -> '-> ('-> 'a) -> 'Blist.t -> 'b
  val opt_map_to :
    ('-> '-> 'b) -> '-> ('-> 'a option) -> 'Blist.t -> 'b
  val weave :
    ('-> '-> 'Blist.t) ->
    ('-> '-> 'c) -> ('Blist.t -> 'c) -> 'Blist.t -> '-> 'c
  val take : int -> 'Blist.t -> 'Blist.t
  val drop : int -> 'Blist.t -> 'Blist.t
  val but_last : 'Blist.t -> 'Blist.t
  val remove_nth : int -> 'Blist.t -> 'Blist.t
  val replace_nth : '-> int -> 'Blist.t -> 'Blist.t
  val repeat : '-> int -> 'Blist.t
  val range : int -> 'Blist.t -> int Blist.t
  val indexes : 'Blist.t -> int Blist.t
  val find_index : ('-> bool) -> 'Blist.t -> int
  val find_indexes : ('-> bool) -> 'Blist.t -> int Blist.t
  val del_first : ('-> bool) -> 'Blist.t -> 'Blist.t
  val uniq : ('-> '-> bool) -> 'Blist.t -> 'Blist.t
  val intersperse : '-> 'Blist.t -> 'Blist.t
  val unzip3 : ('a * 'b * 'c) Blist.t -> 'Blist.t * 'Blist.t * 'Blist.t
  val zip3 : 'Blist.t -> 'Blist.t -> 'Blist.t -> ('a * 'b * 'c) Blist.t
  val find_opt : ('-> bool) -> 'Blist.t -> 'a option
  val find_map : ('-> 'b option) -> 'Blist.t -> 'b option
  val cartesian_product : 'Blist.t -> 'Blist.t -> ('a * 'b) Blist.t
  val cartesian_hemi_square : 'Blist.t -> ('a * 'a) Blist.t
  val choose : 'Blist.t Blist.t -> 'Blist.t Blist.t
  val combs : int -> 'Blist.t -> 'Blist.t Blist.t
  val pairs : 'Blist.t -> ('a * 'a) Blist.t
end