From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 1EB247F747 for ; Thu, 7 Aug 2014 13:37:12 +0200 (CEST) Received-SPF: Neutral (mail3-smtp-sop.national.inria.fr: domain of simon.cruanes.2007@m4x.org does not assert whether or not 129.104.30.34 is permitted sender) identity=pra; client-ip=129.104.30.34; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="SRS0=ubqR=5B=m4x.org=simon.cruanes.2007@bounces.m4x.org"; x-sender="simon.cruanes.2007@m4x.org"; x-conformance=sidf_compatible; x-record-type="spf2.0" Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of SRS0=ubqR=5B=m4x.org=simon.cruanes.2007@bounces.m4x.org designates 129.104.30.34 as permitted sender) identity=mailfrom; client-ip=129.104.30.34; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="SRS0=ubqR=5B=m4x.org=simon.cruanes.2007@bounces.m4x.org"; x-sender="SRS0=ubqR=5B=m4x.org=simon.cruanes.2007@bounces.m4x.org"; x-conformance=sidf_compatible; x-record-type="spf2.0" Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of postmaster@mx1.polytechnique.org designates 129.104.30.34 as permitted sender) identity=helo; client-ip=129.104.30.34; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="SRS0=ubqR=5B=m4x.org=simon.cruanes.2007@bounces.m4x.org"; x-sender="postmaster@mx1.polytechnique.org"; x-conformance=sidf_compatible; x-record-type="v=spf1" X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AscBAL9j41OBaB4inGdsb2JhbABaFoNJV4J3yWCIWhYQAQEBAQEIFAk9hC2BEiECEQVJiFUECZ4DjyuWXI0JgVuDaDaBHAWOf4YxhmeBVZZyagE X-IPAS-Result: AscBAL9j41OBaB4inGdsb2JhbABaFoNJV4J3yWCIWhYQAQEBAQEIFAk9hC2BEiECEQVJiFUECZ4DjyuWXI0JgVuDaDaBHAWOf4YxhmeBVZZyagE X-IronPort-AV: E=Sophos;i="5.01,817,1400018400"; d="asc'?scan'208";a="74207891" Received: from mx1.polytechnique.org ([129.104.30.34]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/ADH-AES256-SHA; 07 Aug 2014 13:37:11 +0200 Received: from fuck_yeah (mna75-4-82-225-76-110.fbx.proxad.net [82.225.76.110]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ssl.polytechnique.org (Postfix) with ESMTPSA id D87131408EEE1 for ; Thu, 7 Aug 2014 13:37:09 +0200 (CEST) Date: Thu, 7 Aug 2014 13:37:04 +0200 From: Simon Cruanes To: OCaml users Message-ID: <20140807113704.GC2825@fuck_yeah> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="SFyWQ0h3ruR435lw" Content-Disposition: inline User-Agent: Mutt/1.5.22 (2013-10-16) X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Thu Aug 7 13:37:10 2014 +0200 (CEST)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.081283, queueID=2C1701408EEE2 X-Org-Mail: simon.cruanes.2007@polytechnique.org Subject: [Caml-list] [ANN] containers 0.3.3 --SFyWQ0h3ruR435lw Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable 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 >=3D 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, >>=3D), functions (id,const,compose) * combinators for printing, equality, comparisons, random generators, etc. * CCError, an error monad (with polymorphic variants, same as D. B=C3=BCn= zli) * 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 --=20 Simon http://weusepgp.info/ key 49AA62B6, fingerprint 949F EB87 8F06 59C6 D7D3 7D8D 4AC0 1D08 49AA 62B6 --SFyWQ0h3ruR435lw Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQIcBAEBAgAGBQJT42TgAAoJEErAHQhJqmK2WWIP/12GekT6YW7jjwx9hHxW/J8M +kk0+Hwn96bRwoDMFjRBUzFImYK5MsumAUTk2zcWdhLm7zgZEzM+KzBXhAQB+3Fq wsSpP9WZX8eFrpF269T0jfrGjvxa4XC0wef25Lnqq3g4x9YEMoUWDBY6RAPiVoIy 29sS59yC97iI7qm1g5Eqbz4h81yK0VFNNt8tNGnoFI+WI7tovlNXjNXoz1OZxjmc MMxnwJ4Fmo7sqk/lcR0VsHMWKcHJZq3b5vmV6BU8sthcjkHUg1Zo8kCvkKoG5ZB5 mvQYk2IOW/ZnX9EtEcsK0SxJnpIdFkTpX/joTiLfHLbszFS2WdQgOwbo1hI9p1B8 5NGE7L6zVKlc5zVtl8DzSoVlJCOJFDW6QWp1r4UGQ5Yn4bc5+FPMBxJi/Dq1rCEN Zo6AjVGsMPzFWSIJOtMjzARL7ky+JlBAODh4w2S8KiFdj0GDCjzE1UGMe1kBA9UZ kyTHEJsz5xgtGFjdazz9IQul94NqBexKZiGgvUqdCPeG1LZ7elk3Irx/ltvzaqYo YGPNflw0V3LPxTmwTsJqWjwJtZ+ElAJmdc6zB0dWoUbiE7clgqiQAZi698bOex51 GzO9HtdO3ICJy1gJTCmtB37oko7THyhBencCtwdXAq9SlFJANCvitZ6teWPWW7Dy 3j3OTC2gS1ca9xVllMk+ =RPAp -----END PGP SIGNATURE----- --SFyWQ0h3ruR435lw--