Hello everyone, I am very pleased to announce the first official release of containers[1], a BSD-licensed extension to the compiler standard library that focused on modularity, efficiency and a small footprint, for OCaml >= 4.01. In particular, no pack, and almost every modules are self-contained (i.e., if you link one module, you don't pay for the other ones). The purpose is not to compete with Batteries or Core, which will always be more exhaustive, but to provide a lightweight and modular approach. You can find the API online [2]. Containers is split into several parts: - a "core" library, just called "containers"; every module it contains is prefixed with "CC"[3] and lives in the global namespace. Most modules provide iterators (especially sequence [4]). In a nutshell: * CCList, with tail-recursive version of fold_right, append and map, and other new functions * CCOpt, CCPair, CCFun, providing useful combinators for pairs, options (map, >>=), functions (id,const,compose) * combinators for printing, equality, comparisons, random generators, etc. * CCError, an error monad (with polymorphic variants, same as D. Bünzli) * other data structures: CCArray, CCVector, CCTrie, CCMultiMap, CCMultiSet, CCHeap, bitvectors - a tiny string library, in "containers.string" (module Containers_string) with a few algorithms on strings. - a heap of unstable, experimental things ("containers.misc") that shouldn't be used in production, but might one day be promoted to core. Contributions and bugreports/fixes are very welcome, the library is still very young[5]. Although some might think it's bad practice, you can also copy individual modules (.mli + .ml) into your own project if for some reason you want to avoid dependencies. Cheers! [1] https://github.com/c-cube/ocaml-containers [2] http://cedeela.fr/~simon/software/containers/ [3] as in "core containers", or "companion cube" if you suspect me of megalomania [4] https://github.com/c-cube/sequence [5] some other attempts at writing a container library: http://img.myconfinedspace.com/wp-content/uploads/2007/07/shipping_gone_wrong.jpg -- Simon http://weusepgp.info/ key 49AA62B6, fingerprint 949F EB87 8F06 59C6 D7D3 7D8D 4AC0 1D08 49AA 62B6