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