---
name: "Stream"
section: "3o"
platform: "linux"
package: "ocaml-man"
version: "4.13.1-4"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/Stream"
---

# Stream(3o)

Streams and parsers.

## NAME

Stream - Streams and parsers.

## Module

Module   Stream

## Documentation

Module **Stream**\
  :  **sig end**

Streams and parsers.

*type* **'a** *t*

The type of streams holding values of type  **'a** .

*exception Failure*

Raised by parsers when none of the first components of the stream patterns is accepted.

*exception Error* **of** **string**

Raised by parsers when the first component of a stream pattern is accepted, but one of the following components is rejected.

### Stream builders

*val from* :  **(int -\> 'a option) -\> 'a t**

**Stream.from f** returns a stream built from the function  **f** . To create a new stream element, the function  **f** is called with the current stream count. The user function  **f** must return either **Some \<value\>** for a value or  **None** to specify the end of the stream.

Do note that the indices passed to  **f** may not start at  **0** in the general case. For example,  **\[\< '0; '1; Stream.from f \>\]** would call **f** the first time with count  **2** .

*val of\_list* :  **'a list -\> 'a t**

Return the stream holding the elements of the list in the same order.

*val of\_string* :  **string -\> char t**

Return the stream of the characters of the string parameter.

*val of\_bytes* :  **bytes -\> char t**

Return the stream of the characters of the bytes parameter.

**Since** 4.02.0

*val of\_channel* :  **in\_channel -\> char t**

Return the stream of the characters read from the input channel.

### Stream iterator

*val iter* :  **('a -\> unit) -\> 'a t -\> unit**

**Stream.iter f s** scans the whole stream s, applying function  **f** in turn to each stream element encountered.

### Predefined parsers

*val next* :  **'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 empty* :  **'a t -\> unit**

Return  **()** if the stream is empty, else raise  **Stream.Failure** .

### Useful functions

*val peek* :  **'a t -\> 'a option**

Return  **Some** of "the first element" of the stream, or  **None** if the stream is empty.

*val junk* :  **'a t -\> unit**

Remove the first element of the stream, possibly unfreezing it before.

*val count* :  **'a t -\> int**

Return the current count of the stream elements, i.e. the number of the stream elements discarded.

*val npeek* :  **int -\> 'a t -\> 'a list**

**npeek n** returns the list of the  **n** first elements of the stream, or all its remaining elements if less than  **n** elements are available.
