+ let create f =
+ S.from (fun _ -> f ())
+
+ let iter t ~f =
+ S.iter f t
+end
+
+module In_channel : sig
+ val lines : in_channel -> string Stream.t
+end = struct
+ let lines ic =
+ Stream.create (fun () ->
+ match input_line ic with
+ | exception End_of_file ->
+ None
+ | line ->
+ Some line
+ )
+end
+
+module Directory : sig
+ val find_files : string -> string Stream.t
+end = struct
+ let find_files root =