Module Tail = Async_kernel.Tail


val sexp_of_t : ('a -> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
val create : unit -> _ t

create () returns a new tail.

val extend : 'a t -> 'a -> unit

extend t v extends the stream, and will raise an exception if t has been closed.

val close_exn : _ t -> unit

close_exn t closes t. Subsequent calls to close_exn or extend will raise an exception.

val close_if_open : _ t -> unit

close_if_open t closes t, if it's not already closed. If t is already closed, then this is a no-op.

val is_closed : _ t -> bool

is_closed t returns true iff the stream t is closed.

module Stream : sig .. end
val collect : 'a t -> 'a Stream.t

collect t returns the stream starting at the current position of the tail, i.e. the stream consisting of all subsequent extends.