Module Gramlib.Stream
type ('e, 'a) t
The type of streams holding values of type
'a
. Producing a new value needs an environment'e
.
Stream builders
val from : ?offset:int -> ('e -> 'a option) -> ('e, 'a) t
Stream.from f
returns a stream built from the functionf
. To create a new stream element, the functionf
is called. The user functionf
must return eitherSome <value>
for a value orNone
to specify the end of the stream.offset
will initialize the streamcount
to start withoffset
consumed items, which is useful for some uses cases such as parsing resumption.
val empty : unit -> ('e, 'a) t
Return the stream holding the elements of the list in the same order.
val of_string : ?offset:int -> string -> (unit, char) t
Return the stream of the characters of the string parameter. If set.
offset
parameter is similar tofrom
.
val of_channel : Stdlib.in_channel -> (unit, char) t
Return the stream of the characters read from the input channel.
Predefined parsers
val next : 'e -> ('e, 'a) t -> 'a
Return the first element of the stream and remove it from the stream.
- raises Stream.Failure
if the stream is empty.
val is_empty : 'e -> ('e, 'a) t -> bool
Return
true
if the stream is empty, elsefalse
.
Useful functions
val peek : 'e -> ('e, 'a) t -> 'a option
Return
Some
of "the first element" of the stream, orNone
if the stream is empty.
val junk : 'e -> ('e, 'a) t -> unit
Remove the first element of the stream, possibly unfreezing it before.
val count : ('e, 'a) t -> int
Return the current count of the stream elements, i.e. the number of the stream elements discarded.
val npeek : 'e -> int -> ('e, 'a) t -> 'a list
npeek e n
returns the list of then
first elements of the stream, or all its remaining elements if less thann
elements are available.