module Tail: sig
.. end
A tail is a pointer to the end of a stream that can be used to extend the stream.
type 'a
t
val create : unit -> 'a 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 : 'a t -> unit
close_exn t
closes t
. Subsequent calls to close_exn
or extend
will raise an exception.
val close_if_open : 'a 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 : 'a 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 extend
s.
val sexp_of_t : ('a -> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
create ()
returns a new tail.
extend t v
extends the stream, and will raise an exception if t
has been
closed.
close_exn t
closes t
. Subsequent calls to close_exn
or extend
will raise an exception.
close_if_open t
closes t
, if it's not already closed. If t
is already
closed, then this is a no-op.
is_closed t
returns true iff the stream t
is closed.
collect t
returns the stream starting at the current position of the tail, i.e. the
stream consisting of all subsequent extend
s.