{0 Batteries user guide}
OCaml Batteries Included documentation.

OCaml Batteries included (or simply "Batteries") is a community-driven effort to standardize on an consistent, documented, and comprehensive development platform for the OCaml programming language.

For the moment, Batteries Included concentrates on:

{ul
{- data structures}
{- file manipulation}
{- inputs and outputs}
{- concurrency}
{- numbers}
{- text, including Unicode}
}

For more information on the installation of Batteries Included, please
read the
{{:https://github.com/ocaml-batteries-team/batteries-included/wiki/Installing-Batteries}Installation
guide} and for an example using it in different build systems, we have
the
{{:https://github.com/ocaml-batteries-team/batteries-included/wiki/Getting-started}Getting
started manual}.

Modules listed below can also be referenced as [Batteries.<short name>]--where [<short name>] is the module name without the initial "Bat"--or as [<short name>] alone, if [Batteries] has been [open]ed.  For example, [BatLazyList] can also be used as [Batteries.LazyList], or as [LazyList] after executing [open Batteries].

Do you have suggestions? Remarks? Bug reports ? To contact us or to be
kept informed, don't hesitate to visit our
{{:http://batteries.forge.ocamlcore.org/}website},
{{:https://github.com/ocaml-batteries-team/batteries-included}Git
repo}, and our
{{:https://github.com/ocaml-batteries-team/batteries-included/issues?sort=created&direction=desc&state=open}Issue
tracker}.

{1 New Data Structures in Batteries}

{!modules: BatBitSet BatCache BatDeque BatDllist BatDynArray BatEnum
BatFingerTree BatGlobal BatHashcons BatHeap BatIMap BatISet
BatLazyList BatMultiPMap BatRefList BatSeq BatSplay BatText BatUChar
BatUref BatUTF8 BatVect}

{1 New Modules in Batteries}

{!modules: BatBase64 BatCharParser BatFile BatInterfaces BatIO BatLog
BatLogger BatNumber BatOptParse BatParserCo
BatResult BatReturn }

{1 Builtin Types as Modules}

{!modules: BatBool BatChar BatFloat BatInt BatInt32 BatInt64
BatNativeint BatOption BatRef BatTuple BatUnit }

{1 Extensions to the Standard Library}

These modules have base library equivalents.  When using [open Batteries], [BatFoo] will replace [Foo], so that the new functions are easily available without a [Bat] prefix on the module name.  As well, [BatPervasives] is opened into the global namespace.  Finally, the previous versions of replaced modules are available in the [Legacy] module, i.e. [Legacy.Unix] and [Legacy.Pervasives].

{!modules: BatArray BatBigarray BatBig_int BatBuffer BatBytes BatComplex
BatDigest BatFormat BatGc BatGenlex BatHashtbl BatLexing BatList
BatMap BatMarshal BatNum BatPervasives BatPrintexc BatPrintf
BatQueue BatRandom BatScanf BatSet BatStack BatStream BatString
BatSys BatUnix}

{1 Thread-related Modules}

These modules are available only when compiling with threads.  To use
them, do [open BatteriesThread] at the top of your code.

{!modules: BatConcurrent BatMutex BatRMutex}

{1 Incubator}

These modules are available only inside [Batteries.Incubator].  Their
interface is not guaranteed stable, and may be changed at any time,
including with backwards incompatible changes between point releases.
They are included for testing and stabilization until they can be
finalized and moved to batteries proper.

{!modules: BatBounded BatOrd BatPathGen BatSubstring}

{1 Internal Modules}

{!modules: BatAvlTree BatInnerIO BatInnerWeaktbl}
