---------------------------------------------------------------------- mk_istream (Lib) ---------------------------------------------------------------------- mk_istream : ('a -> 'a) -> 'a -> ('a -> 'b) -> ('a,'b) istream SYNOPSIS Create a stream. KEYWORDS stream, imperative. DESCRIBE An application {mk_istream trans init proj} creates an imperative stream of elements. The stream is generated by applying {trans} to the state. The first element in the stream state is {init}. The value of the state is obtained by applying {proj}. FAILURE If an application of {trans} or {proj} fails when applied to the state. EXAMPLE The following creates a stream of distinct strings. - mk_istream (fn x => x+1) 0 (concat "gsym" o int_to_string); > val it = : (int, string) istream COMMENTS It is aesthetically unpleasant that the underlying implementation type is visible. See any book on ML programming to see how functional streams are built. SEEALSO Lib.next, Lib.state, Lib.reset. ----------------------------------------------------------------------