sig
  type 'a t
  val foldi : 'a t -> init:'b -> f:(int -> 'b -> 'a -> 'b t) -> 'b t
  val fold : 'a t -> init:'b -> f:('b -> 'a -> '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:('a -> unit t) -> unit t
  val iteri :
    ?how:Deferred_intf.how -> 'a t -> f:(int -> 'a -> unit t) -> unit t
  val map : ?how:Deferred_intf.how -> 'a t -> f:('a -> 'b t) -> 'b t t
  val filter : ?how:Deferred_intf.how -> 'a t -> f:('a -> bool t) -> 'a t t
  val filter_map :
    ?how:Deferred_intf.how -> 'a t -> f:('a -> 'b option t) -> 'b t t
  val all : 'a t t -> 'a t t
  val all_unit : unit t t -> unit t
end