sig
  type 'a t
  val foldi : 'a t -> init:'-> f:(int -> '-> '-> 'b t) -> 'b t
  val fold : 'a t -> init:'-> f:('-> '-> 'b t) -> 'b t
  val init : ?how:Deferred_intf.how -> int -> f:(int -> 'a t) -> 'a t t
  val iter : ?how:Deferred_intf.how -> 'a t -> f:('-> unit t) -> unit t
  val iteri :
    ?how:Deferred_intf.how -> 'a t -> f:(int -> '-> unit t) -> unit t
  val map : ?how:Deferred_intf.how -> 'a t -> f:('-> 'b t) -> 'b t t
  val filter : ?how:Deferred_intf.how -> 'a t -> f:('-> bool t) -> 'a t t
  val filter_map :
    ?how:Deferred_intf.how -> 'a t -> f:('-> 'b option t) -> 'b t t
  val find : 'a t -> f:('-> bool t) -> 'a option t
  val find_map : 'a t -> f:('-> 'b option t) -> 'b option t
  val all : 'a t t -> 'a t t
  val all_unit : unit t t -> unit t
end