ocaml-containers/sequence
2014-08-08 20:16:15 +02:00
..
bench Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
examples Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
invert Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
tests Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
.gitignore Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
.merlin Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
.ocamlinit Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
_oasis Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
_tags Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
CHANGELOG.md Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
configure Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
LICENSE Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
Makefile Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
META Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
myocamlbuild.ml Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
README.md Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
sequence.ml Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
sequence.mldylib Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
sequence.mli Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
sequence.mllib Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
sequence.odocl Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00
setup.ml Merge commit 'c8d834b722a95b9feedf17f91511d138662c6d6f' as 'sequence' 2014-08-08 20:16:15 +02:00

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

See the online API.

Build

  1. via opam opam install sequence
  2. 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.