sig
  val spaces : int -> string
  val catmap : string -> ('-> string) -> 'a list -> string
  val ( +> ) : '-> ('-> 'b) -> 'b
  val transpose : 'a list list -> 'a list list
  val list_last : 'a list -> 'a
  val list_index : 'a list -> '-> int option
  val list_omap : ('-> 'b) -> 'a list -> 'b list
  val catch_all : ('-> 'b) -> '-> 'b option
  val is_some : 'a option -> bool
  val nlist : int -> int list
  val list_prefix : 'a list -> int -> 'a list
  val si : int -> string
  val cat : string -> string list -> string
  val bcat : Buffer.t -> string -> unit
  val hashtable_of_list : ('a * 'b) list -> ('a, 'b) Hashtbl.t
  val fix : (('-> 'b) -> '-> 'b) -> '-> 'b
  val uniq_cat : 'a list -> 'a list -> 'a list
  val uniq_list : 'a list -> 'a list
end