caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Simon Cruanes <simon.cruanes.2007@m4x.org>
To: OCaml users <caml-list@inria.fr>
Subject: [Caml-list] [ANN] containers 0.3.3
Date: Thu, 7 Aug 2014 13:37:04 +0200	[thread overview]
Message-ID: <20140807113704.GC2825@fuck_yeah> (raw)

[-- 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 --]

             reply	other threads:[~2014-08-07 11:37 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-07 11:37 Simon Cruanes [this message]
2014-08-07 15:47 ` Yaron Minsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140807113704.GC2825@fuck_yeah \
    --to=simon.cruanes.2007@m4x.org \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).