module Sdflow:Structured DataFlow, a high-level combinatory dataflow programming library based upon destructive lazy streams. The base typesig..end
flow is
compatible with Stream.t of standard OCaml.
Unless specified, all the flow manipulation functions are lazy by default.
type'aflow ='a Stream.t
exception End_of_flow
End_of_flow = Stream.Failure
Almost identical to Stream's interface function.
val of_fun : (unit -> 'a) -> 'a flowval of_list : 'a list -> 'a flowval of_string : string -> char flowval of_channel : Pervasives.in_channel -> char flowval to_fun : 'a flow -> unit -> 'aval to_list : 'a flow -> 'a listval to_string : char flow -> stringval to_channel : Pervasives.out_channel -> char flow -> unitval seq : 'a -> ('a -> 'a) -> ('a -> bool) -> 'a flowval enum : ?fin:int -> int -> int flowval (--) : int -> int -> int flowval repeat : ?times:int -> 'a -> 'a flowval cycle : ?times:int -> 'a flow -> 'a flowval peek : 'a flow -> 'a optionval next : 'a flow -> 'aval iter : ('a -> unit) -> 'a flow -> unitval foldl : ('a -> 'b -> 'a * bool option) -> 'a -> 'b flow -> 'aval foldr : ('a -> 'b lazy_t -> 'b) -> 'b -> 'a flow -> 'bval fold : ('a -> 'a -> 'a * bool option) -> 'a flow -> 'aval cons : 'a -> 'a flow -> 'a flowval apnd : 'a flow -> 'a flow -> 'a flowval is_empty : 'a flow -> boolval filter : ('a -> bool) -> 'a flow -> 'a flowval concat : 'a flow flow -> 'a flowval take : int -> 'a flow -> 'a flowval drop : int -> 'a flow -> 'a flowval take_while : ('a -> bool) -> 'a flow -> 'a flowval drop_while : ('a -> bool) -> 'a flow -> 'a flowval span : ('a -> bool) -> 'a flow -> 'a flow * 'a flowval break : ('a -> bool) -> 'a flow -> 'a flow * 'a flowval group : ('a -> bool) -> 'a flow -> 'a flow flowval dup : 'a flow -> 'a flow * 'a flowval comb : 'a flow * 'b flow -> ('a * 'b) flowval split : ('a * 'b) flow -> 'a flow * 'b flowval merge : (bool -> 'a -> bool) -> 'a flow * 'a flow -> 'a flowval switch : ('a -> bool) -> 'a flow -> 'a flow * 'a flowval dupn : int -> 'a flow -> 'a flow arrayval combn : 'a flow array -> 'a array flowval splitn : int -> 'a array flow -> 'a flow arrayval mergen : (int -> 'a -> int) -> 'a flow array -> 'a flowval switchn : int -> ('a -> int) -> 'a flow -> 'a flow arrayval map : ('a -> 'b) -> 'a flow -> 'b flowval map2 : ('a -> 'b -> 'c) -> 'a flow -> 'b flow -> 'c flowval scanl : ('a -> 'b -> 'a) -> 'a -> 'b flow -> 'a flowval scan : ('a -> 'a -> 'a) -> 'a flow -> 'a flowval map_fold : ('a -> 'a -> 'a * bool option) -> 'a flow -> 'a flowval feedl : 'a flow -> ('a flow -> 'a flow * 'b) -> 'bval feedr : 'a flow -> ('a flow -> 'b * 'a flow) -> 'bval circ : 'a flow -> ('a flow -> 'a flow) -> 'a flowval (|||) : ('a flow -> 'b flow) ->
('b flow -> 'c flow) -> 'a flow -> 'c flowval while_do : ?size:int ->
('a -> bool) ->
('a flow -> 'a flow) -> 'a flow -> 'a flowval do_while : ?size:int ->
('a -> bool) ->
('a flow -> 'a flow) -> 'a flow -> 'a flowval farm : ?par:int ->
?size:(int -> int) ->
?path:('a -> int) ->
(int -> 'a flow -> 'b flow) -> 'a flow -> 'b flowval (|>) : 'a -> ('a -> 'b) -> 'bval (@.) : ('a -> 'b) -> 'a -> 'bval (|-) : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'cval (-|) : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'bval (//) : ('a -> 'b) -> ('c -> 'd) -> 'a * 'c -> 'b * 'dval curry : ('a * 'b -> 'c) -> 'a -> 'b -> 'cval uncurry : ('a -> 'b -> 'c) -> 'a * 'b -> 'cval id : 'a -> 'a