1.8 KiB
Sequence
Simple sequence abstract datatype, intended to transfer a finite number of
elements from one data structure to another. Some transformations on sequences,
like filter, map, take, drop and append can be performed before the
sequence is iterated/folded on.
Sequence is not designed to be as general-purpose or flexible as, say,
Batteries' Enum.t. Rather, it aims at providing a very simple and efficient
way of iterating on a finite number of values, only allocating (most of the time)
one intermediate closure to do so. For instance, iterating on keys, or values,
of a Hashtbl.t, without creating a list.
Documentation
There is only one type, 'a Sequence.t, and lots of functions built around
this type.
To get an overview of sequence, its origins and why it was created,
you can start with the slides of a talk
I (c-cube) made at some OCaml meeting.
See the online API for more details on the set of available functions.
Build
- via opam
opam install sequence - manually (need OCaml >= 3.12):
make all install
If you have OUnit installed, you can build and run tests with
$ make tests
$ ./run_tests.native
If you have Bench installed, you can build and run benchmarks with
$ make benchs
$ ./benchs.native
To see how to use the library, check the examples directory.
tests.ml has a few examples of how to convert basic data structures into
sequences, and conversely.
Examples
The module examples/sexpr.mli exposes the interface of the S-expression
example library. It requires OCaml>=4.0 to compile, because of the GADT
structure used in the monadic parser combinators part of examples/sexpr.ml.
License
Sequence is available under the BSD license.