anchor.diff: -= ocaml-containers =
  += OCaml-containers =
   :toc: macro
   :source-highlighter: pygments
   
  
positive.code: What is _containers_?
  
  - A usable, reasonably well-designed library that extends OCaml's standard
    library (in `core/`, packaged under `containers` in ocamlfind. Modules
    are totally independent and are prefixed with `CC` (for "containers-core"
    or "companion-cube" because I'm megalomaniac). This part should be
    usable and should work. For instance, `CCList` contains functions and
    lists including safe versions of `map` and `append`. It also
    provides a drop-in replacement to the standard library, in the module
    `Containers` (intended to be opened, replaces some stdlib modules
    with extended ones)
  - Several small additional libraries that complement it:
  
    * `containers.data` with additional data structures that don't have an
      equivalent in the standard library;
    * `containers.io` (deprecated)
    * `containers.iter` with list-like and tree-like iterators;
    * `containers.string` (in directory `string`) with
      a few packed modules that deal with strings (Levenshtein distance,
      KMP search algorithm, and a few naive utils). Again, modules are independent
      and sometimes parametric on the string and char types (so they should
  
negative.code: 
      $ make
  
  To build and run tests (requires `oUnit` and https://github.com/vincent-hugot/iTeML[qtest]):
  
      $ opam install oUnit qtest
      $ ./configure --enable-tests --enable-unix --enable-bigarray
      $ make test
  
  To build the small benchmarking suite (requires https://github.com/chris00/ocaml-benchmark[benchmark]):
  
      $ opam install benchmark
      $ make bench
  