Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
seq.ml1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28include Stdlib.Seq open Eio type 'a reader = 'a t type 'a writer = { mutable resolver : 'a node Promise.u } let write writer item = let promise, resolver = Promise.create () in let next = Cons (item, fun () -> Promise.await promise) in Promise.resolve writer.resolver next; writer.resolver <- resolver let close_writer writer = Promise.resolve writer.resolver Nil let read reader = reader () let rec exhaust_reader reader = match reader () with Nil -> () | Cons (_, reader) -> exhaust_reader reader let read_and_exhaust reader = match reader () with | Nil -> None | Cons (item, reader) -> exhaust_reader reader; Some item let create_reader_writer () = let promise, resolver = Promise.create () in ((fun () -> Promise.await promise), { resolver })