sig
  type 'a flow = 'Stream.t
  exception End_of_flow
  val of_fun : (unit -> 'a) -> 'Sdflow.flow
  val of_list : 'a list -> 'Sdflow.flow
  val of_string : string -> char Sdflow.flow
  val of_channel : Pervasives.in_channel -> char Sdflow.flow
  val to_fun : 'Sdflow.flow -> unit -> 'a
  val to_list : 'Sdflow.flow -> 'a list
  val to_string : char Sdflow.flow -> string
  val to_channel : Pervasives.out_channel -> char Sdflow.flow -> unit
  val seq : '-> ('-> 'a) -> ('-> bool) -> 'Sdflow.flow
  val enum : ?fin:int -> int -> int Sdflow.flow
  val ( -- ) : int -> int -> int Sdflow.flow
  val repeat : ?times:int -> '-> 'Sdflow.flow
  val cycle : ?times:int -> 'Sdflow.flow -> 'Sdflow.flow
  val peek : 'Sdflow.flow -> 'a option
  val next : 'Sdflow.flow -> 'a
  val iter : ('-> unit) -> 'Sdflow.flow -> unit
  val foldl : ('-> '-> 'a * bool option) -> '-> 'Sdflow.flow -> 'a
  val foldr : ('-> 'b lazy_t -> 'b) -> '-> 'Sdflow.flow -> 'b
  val fold : ('-> '-> 'a * bool option) -> 'Sdflow.flow -> 'a
  val cons : '-> 'Sdflow.flow -> 'Sdflow.flow
  val apnd : 'Sdflow.flow -> 'Sdflow.flow -> 'Sdflow.flow
  val is_empty : 'Sdflow.flow -> bool
  val filter : ('-> bool) -> 'Sdflow.flow -> 'Sdflow.flow
  val concat : 'Sdflow.flow Sdflow.flow -> 'Sdflow.flow
  val take : int -> 'Sdflow.flow -> 'Sdflow.flow
  val drop : int -> 'Sdflow.flow -> 'Sdflow.flow
  val take_while : ('-> bool) -> 'Sdflow.flow -> 'Sdflow.flow
  val drop_while : ('-> bool) -> 'Sdflow.flow -> 'Sdflow.flow
  val span :
    ('-> bool) -> 'Sdflow.flow -> 'Sdflow.flow * 'Sdflow.flow
  val break :
    ('-> bool) -> 'Sdflow.flow -> 'Sdflow.flow * 'Sdflow.flow
  val group : ('-> bool) -> 'Sdflow.flow -> 'Sdflow.flow Sdflow.flow
  val dup : 'Sdflow.flow -> 'Sdflow.flow * 'Sdflow.flow
  val comb : 'Sdflow.flow * 'Sdflow.flow -> ('a * 'b) Sdflow.flow
  val split : ('a * 'b) Sdflow.flow -> 'Sdflow.flow * 'Sdflow.flow
  val merge :
    (bool -> '-> bool) -> 'Sdflow.flow * 'Sdflow.flow -> 'Sdflow.flow
  val switch :
    ('-> bool) -> 'Sdflow.flow -> 'Sdflow.flow * 'Sdflow.flow
  val dupn : int -> 'Sdflow.flow -> 'Sdflow.flow array
  val combn : 'Sdflow.flow array -> 'a array Sdflow.flow
  val splitn : int -> 'a array Sdflow.flow -> 'Sdflow.flow array
  val mergen : (int -> '-> int) -> 'Sdflow.flow array -> 'Sdflow.flow
  val switchn : int -> ('-> int) -> 'Sdflow.flow -> 'Sdflow.flow array
  val map : ('-> 'b) -> 'Sdflow.flow -> 'Sdflow.flow
  val map2 :
    ('-> '-> 'c) -> 'Sdflow.flow -> 'Sdflow.flow -> 'Sdflow.flow
  val scanl : ('-> '-> 'a) -> '-> 'Sdflow.flow -> 'Sdflow.flow
  val scan : ('-> '-> 'a) -> 'Sdflow.flow -> 'Sdflow.flow
  val map_fold :
    ('-> '-> 'a * bool option) -> 'Sdflow.flow -> 'Sdflow.flow
  val feedl : 'Sdflow.flow -> ('Sdflow.flow -> 'Sdflow.flow * 'b) -> 'b
  val feedr : 'Sdflow.flow -> ('Sdflow.flow -> 'b * 'Sdflow.flow) -> 'b
  val circ :
    'Sdflow.flow -> ('Sdflow.flow -> 'Sdflow.flow) -> 'Sdflow.flow
  val ( ||| ) :
    ('Sdflow.flow -> 'Sdflow.flow) ->
    ('Sdflow.flow -> 'Sdflow.flow) -> 'Sdflow.flow -> 'Sdflow.flow
  val while_do :
    ?size:int ->
    ('-> bool) ->
    ('Sdflow.flow -> 'Sdflow.flow) -> 'Sdflow.flow -> 'Sdflow.flow
  val do_while :
    ?size:int ->
    ('-> bool) ->
    ('Sdflow.flow -> 'Sdflow.flow) -> 'Sdflow.flow -> 'Sdflow.flow
  val farm :
    ?par:int ->
    ?size:(int -> int) ->
    ?path:('-> int) ->
    (int -> 'Sdflow.flow -> 'Sdflow.flow) ->
    'Sdflow.flow -> 'Sdflow.flow
  val ( |> ) : '-> ('-> 'b) -> 'b
  val ( @. ) : ('-> 'b) -> '-> 'b
  val ( |- ) : ('-> 'b) -> ('-> 'c) -> '-> 'c
  val ( -| ) : ('-> 'b) -> ('-> 'a) -> '-> 'b
  val ( // ) : ('-> 'b) -> ('-> 'd) -> 'a * '-> 'b * 'd
  val curry : ('a * '-> 'c) -> '-> '-> 'c
  val uncurry : ('-> '-> 'c) -> 'a * '-> 'c
  val id : '-> 'a
end