sig
  type _ t
  val foldl : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a
  val foldr : ('a -> (unit -> 'b) -> 'b) -> (unit -> 'b) -> 'a t -> 'b
  val foldr' : ('a -> 'b -> 'b) -> 'b -> 'a t -> 'b
  val fold_map :
    (module Monoid.S with type t = 'm) -> ('a -> 'm) -> 'a t -> 'm
  val any : ('a -> bool) -> 'a t -> bool
  val all : ('a -> bool) -> 'a t -> bool
  val find : ('a -> bool) -> 'a t -> 'a option
end