caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] [ANN] containers 0.3.3
@ 2014-08-07 11:37 Simon Cruanes
  2014-08-07 15:47 ` Yaron Minsky
  0 siblings, 1 reply; 2+ messages in thread
From: Simon Cruanes @ 2014-08-07 11:37 UTC (permalink / raw)
  To: OCaml users

[-- Attachment #1: Type: text/plain, Size: 2316 bytes --]

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

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-08-07 15:47 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-07 11:37 [Caml-list] [ANN] containers 0.3.3 Simon Cruanes
2014-08-07 15:47 ` Yaron Minsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).