sig
  val iter : f:('-> unit) -> 'Stream.t -> unit
  val foldl :
    f:('-> '-> 'a * bool option) -> init:'-> 'Stream.t -> 'a
  val foldr : f:('-> 'b lazy_t -> 'b) -> init:'-> 'Stream.t -> 'b
  val fold : f:('-> '-> 'a * bool option) -> init:'Stream.t -> 'a
  val filter : f:('-> bool) -> 'Stream.t -> 'Stream.t
  val map : f:('-> 'b) -> 'Stream.t -> 'Stream.t
  val map2 : f:('-> '-> 'c) -> 'Stream.t -> 'Stream.t -> 'Stream.t
  val scanl : f:('-> '-> 'a) -> '-> 'Stream.t -> 'Stream.t
  val scan : f:('-> '-> 'a) -> 'Stream.t -> 'Stream.t
  val take_while : f:('-> bool) -> 'Stream.t -> 'Stream.t
  val drop_while : f:('-> bool) -> 'Stream.t -> 'Stream.t
  val merge :
    f:(bool -> '-> bool) -> 'Stream.t * 'Stream.t -> 'Stream.t
  val switch : f:('-> bool) -> 'Stream.t -> 'Stream.t * 'Stream.t
end