sig
  type ('a, +'b) container
  val length : ('a, 'b) container -> int
  val is_empty : ('a, 'b) container -> bool
  val iter : ('a, 'b) container -> f:('-> unit) -> unit
  val fold : ('a, 'b) container -> init:'-> f:('-> '-> 'c) -> 'c
  val exists : ('a, 'b) container -> f:('-> bool) -> bool
  val for_all : ('a, 'b) container -> f:('-> bool) -> bool
  val find : ('a, 'b) container -> f:('-> bool) -> 'a option
  val to_list : ('a, 'b) container -> 'a list
  val to_array : ('a, 'b) container -> 'a array
  val container : ('a, ('a, 'b) container) Container.type_class
end