ActiveBuffer
[08-Nov-2002,
Development code]
This library is an extension of the Buffer library which is included in the standard OCaml distribution. Its interest is to allow to read buffers partially.
adwords API
[16-Aug-2005, version
1.0.0,
Stable]
Interface to Google Adwords API. This API offers rapid, type-safe development, command line tools for doing common Adwords operations, interactive access to the API.
Amble
[26-Oct-2004, version
0.1,
Beta]

A library to help writing distributed programs. The library manages all the details relevant to process launching, channel creation, and network communication so as to let the programmer stick to the core of the problem. This allows to write programs that can be distributed on several machines in a concise way, with all the parallel aspects kept implicit (no synchronisation).
Annexlib
[03-Feb-2004, version
0.13.0,
Beta]


THis library contains a lot of the routines the author find needing all the time that aren't in the standard library (Especially string searching and manipulation), and some other odds and ends that are useful at times. Highlights include wildcard globbing, lots of string searching and manipulation routines, locale support, ~user-style path expansion, and more.
AnsiTerminal
[16-Jun-2005, version
0.3,
Beta]

O'Caml ANSIColor is an O'Caml library for creating colorful text and other in effects in ANSI-compatible terminals. The code is staggeringly simple and the interface and implementation are both very roughly based on Term::ANSIColor.
Baire
[09-Sep-2002, version
0.0.0,
Alpha]

A data structures library.
Barista
[10-Sep-2007, version
1.0-alpha,
Alpha]

Library for Java .class file manipulation.
Also a command-line [dis]assembler for Java.
BDBFS
[18-Dec-2002, version
0.3,
Beta]
BDBFS is a portable, user-level NFS fileserver implemented in OCaml. BDBFS stands for Berkeley DataBase File System: it stores files, metadata (directories, inodes, the superblock) as key:value pairs using the Berkeley Database (Berkeley DB) library.
Bin-prot
[13-May-2008, version
1.0.5,
Stable]
A binary protocol generator.
Bindlib
[05-Oct-2006, version
3.0,
Stable]

Bindlib is a library and a camlp4 syntax extension for the OCaml language. It proposes a set of tools to manage data structures with bound and free variables. It includes fast substitution and management of variables names including renaming.
BioCaml
[12-Aug-2002,
Development code]
BioCaml aims to be a library of useful functions for bioinformatics, written in the Objective Caml (OCaml) language.
Bitv
[09-Aug-2001, version
0.5,
Beta]

A bit vectors library.
BNC
[20-Feb-2004, version
0.0.1,
Development code]
A lexer/parser for turning files tagged for the British National Corpus into something usefully symbolically manipulated in OCaml.
BoomSMS
[29-Nov-2005, version
1.0.2,
Stable]
A simple interface to the commercial Boom SMS (text message sending) service.
BSMLlib
[01-Mar-2004, version
0.25,
Beta]

A functional programming library for for direct-mode BSP (Bulk Synchronous Parallel) algorithms.
calendar
[11-Feb-2008, version
2.0,
Stable]


An OCaml library managing dates and times.
Caml-shift
[19-Apr-2006, version
1.6,
Stable]
two OCaml implementations of Dybvig, Sabry, Peyton-Jones' delimited continuation framework. The framework supports `static' ( shift/ reset) and `dynamic' ( prompt/ control, shift0, control0) delimited continuation operators with multiple, arbitrarily typed prompts.
CamlG4
[11-Mar-2003, version
1.00,
Beta]
A library for Objective Caml allowing SIMD parallel processing on PowerPC G4 processor using the Altivec vector processing unit.
CamlGI
[17-Feb-2005,
Beta]
CamlGI is a library to enable you to write CGI and FastCGI in OCaml. It is written 100% in OCaml so should run on many platforms. The library supports multiple simultaneous connections and request multiplexing while presenting an easy to use interface.
Camlhilight
[25-Nov-2008, version
0.5,
Beta]

Camlhighlight provides syntax highlighting and pretty-printing facilities for displaying code samples in Ocsigen applications. The library works by parsing the output of Highlight, a widely available application supporting the most common programming and markup languages.
CamlIDL
[10-Aug-2001, version
1.04,
Stable]

CamlIDL is a stub code generator and COM binding for Objective Caml.
Camlish
[27-Oct-2008, version
0.01,
Alpha]

A simple module for shell scripting in OCaml.
CamlPDF
[20-Jan-2009, version
0.4,
Beta]

CamlPDF is a library for reading, writing and manipulating PDF files
and data.
CamlZip
[28-Aug-2001, version
1.01,
Stable]
An Objective Caml library that provides easy access to compressed files in ZIP and GZIP format, as well as to Java JAR files.
Camomile
[28-Aug-2006, version
0.7.1,
Beta]

Camomile is a comprehensive Unicode library for OCaml. Camomile provides Unicode character type, UTF-8, UTF-16, UTF-32 strings, conversion to/from about 200 encodings, collation and locale-sensitive case mappings, and more. The library is currently designed for Unicode Standard 3.2.
CDuce
[08-Jul-2004, version
0.2.0,
Beta]



A strongly typed higher-order functional programming language for XML documents with an efficient type-based runtime implementation.
cgi
[09-Aug-2001,
Stable]
A small library to write CGI in Objective Caml.
ChartPak
[18-Dec-2003, version
1.0a3,
Beta]

An easy-to-use library for dynamically generating business-oriented data visualizations for the web.
Cis
[29-May-2006,
Beta]
This module implements compact integer sets, represented as a (custom) list of integer intervals. Usual set operations are provided. The advantage compared to ordered lists is that the actual size may be smaller than the cardinal of a set when many elements are contiguous. Most set operations are linear w.r.t. the size of the structure, not the cardinal of the set.
Col
[27-Apr-2006,
Beta]

This package provides a syntax extension for easier manipulation of flat records, objects or tuples and conversions from/to CSV files for your favorite spreadsheet or plotting program.
Concurrent Cell
[14-Jan-2009, version
1.4.0,
Beta]
'Concurrent Cell' is a library for multi-thread programming with CML(Concurrent ML) style synchronous message passing communications.
The Threads library, a part of OCaml, realizes the CML style event value, but does not support shared variables like ivar and mvar. This library implements these variables without creating any new thread. This means that ivar and mvar are lightweight and GC target.
Config_file
[03-Dec-2004, version
0.1,
Beta]
This library allows one to save configuration parameters (basic types, lists,
user defined, etc.) into a file and load them. The configuration file is human
readable, structured and allow (* *) comments.
Contfrac
[31-Mar-2004, version
alpha-1,
Alpha]
An OCaml module for performing exact arithmetic on real numbers by representing them as continued fractions. It implements the well-known algorithm described by R.W. Gosper (see reference below). The continued fractions are lazy evaluated (eventually infinite) lists. Basic arithmetic operations as well as many transcendent functions are available.
coThreads
[18-Sep-2007, version
0.10,
Beta]

coThreads is a concurrent programming library for OCaml. It enhances the Threads library of the standard OCaml distribution in two dimensions: coThreads implements the same API of the standard Threads library on different execution engines (process, netwoker(todo)), so that a single copy of source code can be compiled and deployed to different environments without modification; coThreads is also a super set of the standard Threads library, with extra components (STM etc.), functions (spawn etc.) and features (object-level compatibility etc.).
cryptgps
[09-Aug-2001, version
0.2,
Beta]

Symmetric cryptographic algorithms: Blowfish, DES, 3DES.
Cryptokit
[05-Apr-2002, version
1.2,
Stable]
A library of cryptographic primitives for OCaml.
Cstr
[12-Feb-2003, version
0.8,
Beta]

A full-featured charset and string library.
Custom Tree Models for LablGTK
[06-Aug-2007, version
1.0,
Stable]

Some code to make it relatively easy to develop custom tree models using LablGTK (GTK+ 2.0 in OCaml).
This means that you can have a tree structure coded naturally in OCaml and treat it more or less directly as a tree model, instead of having to shove values into a GTree.tree_store. There are some caveats as described in the README file.
Deriving
[20-Jun-2007, version
0.1,
Beta]

A system for constructing functions automatically from type definitions.
Dllist
[07-Sep-2004, version
2004-08-27,
Beta]
A mutable, circular, doubly linked list library.
Dum
[13-Oct-2008, version
1.0.0,
Stable]

Dum is a library for inspecting the runtime representation of arbitrary Objective Caml values.
Shared or cyclic data are detected and labelled. This guarantees that printing would always terminate. This makes it possible to print values such as closures, objects or exceptions in depth and without risk.
Dypgen
[23-Oct-2006, version
20061020,
Beta]

Dypgen is a GLR parser generator for Objective Caml, it is able to generate dynamically extensible parsers.
Easy-format
[10-Jul-2008, version
0.9.0,
Beta]

A small library (a module in fact) that is meant
to make it easy to produce pretty-printed text.
The data to be printed goes through a tree that carries all the
information required for pretty-printing. After that, a single call to
Easy_format.Pretty.to_stdout (for instance) outputs the indented result.
Ensemble
[28-Apr-2003, version
2.00,
Stable]

A group communication toolkit.
Env
[07-Sep-2004, version
2004-09-02,
Beta]
An Environment Interaction module for Objective Caml. It's useful if you need to create a local copy of the current environment for modification.
equeue
[04-Jan-2004, version
2.0,
Stable]


Equeue is a library that offers general purpose event queues and event queues for system events.
estring
[03-Nov-2008, version
0.1,
Alpha]
estring, which stands for `extended strings' is a library with a syntax extension allowing to see strings as lists of characters. It also define a new safe and extensible printf/scanf facility.
Ethread
[03-Feb-2004, version
1.0.1,
Stable]

The ethread library has modules for read/write locks, barriers, and a simple thread-safe message queue that interacts with Unix.select so a thread can wait for I/O or a message at the same time.
Extended thread synchronisations
[01-Mar-2004,
Development code]
Two small modules that implement extended synchronisations for O'Caml threads.
Extlib
[08-Jan-2008, version
1.5.1,
Beta]


ExtLib is a project aiming at providing a complete - yet small - standard library for the OCaml programming langage. The purpose of this library is to add new functions to OCaml Standard Library modules, to modify some functions in order to get better performances or more safety (tail-recursive) but also to provide new modules which should be useful for the average OCaml programmer.
Fiblib
[25-Jul-2007, version
0.1,
Alpha]
An efficient, imperative Fibonacci heap library, based on the pseudocode of Cormen, Leiserson, Rivest, and Stein. Aims to be practical and elegant.
FileUtils
[25-May-2004, version
0.3.0,
Beta]
A collection of utils to manipulate files following some UNIX convention.
Galax
[18-Feb-2005, version
0.5.0,
Beta]


Galax is an open-source implementation of XQuery 1.0, the W3C XML Query Language. Galax closely tracks the definition of XQuery 1.0 as specified by the W3C and also implements XPath 2.0, which is a subset of XQuery 1.0.
GenePool
[13-Oct-2008,
Alpha]

GenePool is a framework for writing evolutionary optimization algorithms in OCaml. This library is not a complete solution but rather is a generic skeleton which takes care of the plumbing and nuisances of optimization. You provide GenePool with functions that give meaning to fitness and reproduction and after a specified number of generation, GenePool returns an array of the best "genomes" it evolved.
Getopt
[09-Aug-2001, version
2000-08-04,
Beta]

Parsing of command line arguments (à la GNU GetOpt) for OCaml.
gprint
[20-Apr-2006,
Development code]
The facility that prints results and types of expressions evaluated at
the top-level is now available anywhere in the program -- in bytecode-
or natively compiled programs. Generic printing is a (perhaps
unintentional) `side-effect' of MetaOCaml -- of the fact that a code
value is not merely AST; the code value also captures the type and the
type environment of variables and other values. Generic printing is a
library that works with the unmodified MetaOCaml (which is _fully_
compatible with the regular OCaml).
GrabBag
[12-Jan-2004,
Development code]
A collection datastructure. Unordered insertion, uniformly random removal.
GraphPS
[31-May-2002, version
1.0,
Stable]

GraphPS is an Objective Caml module that allows generating PostScript graphic. Its interface is almost identical to that of the Graphics module of the distribution, so that it is easy to switch.
Gregorian Date
[27-Oct-2004, version
1.0.0,
Stable]
A pure OCaml library for performing calculations based on the Gregorian calendar.
HashSet
[08-Mar-2006,
Beta]
HashSet is a hashed set library for Objective Caml.
Buckets are ordered and the first element of a bucket is kept in a
separate array, with occupation controlled by a bitvector.
HDCaml
[07-Nov-2005, version
0.2.9,
Beta]
HDCaml provides a framework for describing hardware structures in OCaml.
Given a functional hardware description, HDCaml will produce a Verilog
netlist for verification and implementation.
HDCaml also has decent PSL support for assertion based verification.
heap
[21-Feb-2003]
Heaps, imperative and functional implementations.
HostIP
[03-Apr-2006, version
0.2,
Beta]
HostIP is an OCaml module for looking up geolocation data from IP addresses. It uses the community HostIP project.
Htree
[12-Dec-2002, version
1.0,
Stable]
A generic library for browsing trees using hyperbolic geometry.
Inifiles
[02-Mar-2007, version
1.2,
Stable]
An ini file parser, in case you ever need to parse one of those little buggers.
io
[03-Oct-2006, version
0.3,
Beta]
"io" is an IO combinator library for safe I/O over strings and channels,
in the style of "picklers" which can then be used with various backends
to safely load and save data. Currently available backends include :
human readable ASCII, binary and compressed binary. A type-independent
command can convert between different representations. The
representation for records and sum types is upwards compatible. Note
that sharing and circular structures are not supported.
Iom
[04-Jun-2008, version
0.4,
Alpha]
Reactive I/O Monad library implements I/O monad functions
designed to
facilitate writing of concurrent, reactive, single-threaded network
application
services in a functional style.
Iox
[27-Mar-2002, version
1.00-beta 1,
Beta]
This library is a framework for concurrent, single-threaded Internet application services.
Jabbr
[25-Nov-2002, version
]
An OCaml library for the XMPP (better known as Jabber) instant messaging system.
Jane Street's core library
[13-May-2008, version
0.5.0,
Stable]
Jane Street's alternative to the standard library.
JavaLib
[25-Aug-2008, version
1.6,
Stable]
JavaLib is a library that can fully parse Java .class file into OCaml data
structure, thus enabling the OCaml programmer to extract informations from
class files, to manipulate and to generate valid class files.
json-wheel
[04-Dec-2006, version
1.0.0,
Stable]

json-wheel is an OCaml implementation of the JSON data interchange format,
which can be considered as a lightweight alternative to XML.
Kdialog2OCaml
[27-Feb-2006,
Beta]
To use Kdialog from OCaml.
Lego Mindstorm Library
[21-Mar-2008, version
0.5.1,
Stable]

LEGO Mindstorm® is a versatile robotic construction kit. The central component is the programmable NXT brick to which one can connect up to three motors and various sensors. The brick can run programs directly uploaded to it or can be controlled via bluethooth or USB.
This library allows you to communicate with — and drive — your NXT brick from OCaml programs through a bluetooth connection. The full LEGO® communication protocol (including all "direct commands") is supported. This library has been tested on Linux, Windows (without the fantom drivers installed) and Mac OSX.
Lemac
[11-Jun-2007,
Development code]
A simple GUI for OCaml. It offers two kinds of widgets, to wit, buttons and an Emacs like mini-editor.The idea is to create a GUI with a very small footprint, that is easy to handle for final users, and productive for developers.
Libml
[08-Apr-2004, version
alpha,
Alpha]
Machine Learning Library, a library containing structures and
algorithms, simply usable from most of common languages.
LinkedHashtbl
[07-Sep-2004, version
2004-08-27,
Beta]
A wrapper for the Objective Caml Hashtbl module that uses a Linked List to preserve the order in which the hash elements are added. It's similar in purpose to the Tie::IxHash module for Perl.
LocalCaml
[25-May-2004, version
0.2.0,
Beta]

A message catalog system for localising text in OCaml programs.
The approach taken is partly inspired by Perl's Locale::Maketext module. In an attempt to provide the flexibility needed to adapt sentence structure and morphology to numeric parameters in messages, the library uses a general-purpose template engine, CamlTemplate as a language for writing message templates.
Logger module
[09-Aug-2004,
Beta]
A logger module for Objective Caml.
lpd and Socket
[03-Dec-2004, version
0.8,
Beta]
A small threaded line printer daemon whose primary goal was to enable the use of a windows-only printer, it should be easily modifiable for other purposes. A small module of pervasive-like functions for sockets on all platforms (including win9x) is bundled together.
Lua-ml
[27-Sep-2004,
Beta]
A new API that uses higher-order functions and types to simplify the use of an embedded interpreter.
Luo
[12-Dec-2002, version
2.1,
Stable]

A system written in Caml and Maple to perform average-case complexity analysis of algorithms.
mail-smtp
[02-Jun-2003, version
0.1.3,
Alpha]

An Objective Caml library implementing part of the SMTP protocol.
Mathlib
[20-Nov-2003, version
0.11.0,
Beta]

Mathlib is a collection of hopefully-useful functions for working with floats, Complex numbers, and random numbers. It has the basic math functions added to the C99, trigonometric functions for complex numbers, the Mersenne Twister random number generator, and modules for generating random numbers in a variety of distributions.
Melt
[05-Feb-2009, version
1.0.0,
Beta]

Melt is a set of libraries and tools which allows you to program LaTeX
documents using OCaml. This combines the typesetting power of LaTeX with
the programming power of OCaml. It can be combined with Mlpost to
include figures.
Memcheck
[20-Dec-2006,
Alpha]
A module for runtime type checking in Ocaml.
Memcheck is very similar to SafeUnmarshal but without a few of SafeUnmarshal's limitations. In particular, with Memcheck it only takes seconds to check a few megabytes instead of hours as with
SafeUnmarshal.
Missinglib
[02-Jul-2004, version
0.4.1,
Beta]

A collection of various utilities for OCaml.
ML-Postscript
[10-Aug-2001,
Development code]

A library to produce PostScript documents.
mldiff
[08-Sep-2006, version
1.01,
Stable]
mldiff is a program implementing the algorithm of "diff" (print differences between files) rewritten in ocaml. It contains also a module to compute differences between anything (not only strings).
Mlgrace
[02-Nov-2004, version
0.1.0,
Beta]

A high-level interface to the Grace 2D plotting application. It makes extensive use of OCaml's labeled optional arguments, making the most common plotting operations quick and easy.
MLGraph
[27-Sep-2002,
Stable]

An Objective Caml library to produce PostScript images.
mlOscar
[04-Aug-2004, version
0.9.0,
Beta]
mlOscar is an OCaml library that facilitates the encoding/decoding of the AOL OSCAR protocol. Networking functionality is available to enable access to the AIM network.
Mp3tag
[16-Jan-2002, version
1.0,
Stable]

A library containing functions to read or write mp3 tags.
MyCGR
[03-Jul-2006, version
0.98,
Beta]

This software implements the researches of the thesis of Peggy Cénac. Use the CGR to build a new family of tests of structure of sequences (i.i.d., markovian), empirically check the level and power of the tests and apply them on DNA sequences. Generalize the dinucleotide abundance profile to a CGR-based relative abundance profile and use this profile on DNA sequences to build taxonomy trees. Define CGR-trees, which are Digital Search Trees built from sequences, and check that the empirical longest branches, shortest branches and insertion level match the theorical results of the thesis.
netclient
[28-Jul-2005, version
0.91,
Beta]

Experimental client for HTTP/1.1 and telnet.
objsize
[19-Dec-2007, version
0.11,
Development code]
This is a small OCaml library for computing size of OCaml values.
It computes count of words used for values, count of values' headers,
maximal depth of values. There are functions to get size of values
in bytes too.
Objsize
[23-Jul-2008, version
0.11,
Stable]
Objsize is a small OCaml library for computing size of OCaml values. It computes count of words used for values, count of values' headers, maximal depth of values. There are functions to get size of values in bytes too.
OC-Soap
[28-Jun-2005, version
0.3.2,
Alpha]
This is a proper version of a SOAP client for OCaml, which uses CDuce
(http://www.cduce.org/) to parse WSDL + XML Schema interface
descriptions, turning them into SOAP client stubs.
OCaml Reins
[26-Sep-2007, version
0.1,
Alpha]
OCaml-Reins is a data structure library for O'Caml that includes cursor based iterators, a collection of functors to minimize client-side boilerplate, a powerful on-line benchmarking system and Quickcheck style testing infrastructure.
OCaml CSV
[29-Nov-2005, version
1.1.0,
Stable]
This library can read and write CSV files, including all extensions used by Excel - eg. quotes, newlines, 8 bit characters in fields, "0 etc.
The library comes with a handy command line tool called csvtool for handling CSV files from shell scripts.
OCaml Dump
[21-Jan-2008, version
0.2 beta,
Beta]

Another print anything module.
OCaml WordNet
[19-Apr-2006, version
0.1,
Beta]

This package contains the OCaml Interface to WordNet 2.1. It enables Ocaml programs to use
the Wordnet dictionary for (english) word forms and meanings. This library directly parses the WordNet dictionary files, and does not depend on any other libraries. This library requires WordNet 2.1 to be installed (WordNet is available as a free download).
OCaml XML-RPC
[15-Mar-2004, version
0.2.3,
Beta]
An implementation of the XML-RPC protocol.
OCaml-ast-analyze
[19-Apr-2005, version
0.1.1,
Development code]
Ocaml-ast-analyze should provide an abstraction of the structure required to build pr_*.cmo module for camlp4. The idea is to provide a simple way to build Ocaml abstract syntax tree analyzer. This should be particularly useful for string extraction of Ocaml source code.
OCaml-Benchmark
[03-Dec-2004, version
0.6,
Beta]
A small module to benchmark running times of code. It supersedes an earlier version by Doug Bagley.
ocaml-classes
[05-Aug-2002, version
3.05,
Stable]
A small library of wrappers around standard library classes, to allow a somehow object-oriented use.
OCaml-dtools
[28-Nov-2006, version
0.1.2,
Beta]
An OCaml small library for daemons (init, logging, configuration).
ocaml-duppy
[10-Mar-2008, version
0.1.0,
Beta]
An advanced scheduler. The basics of this scheduler is to implement a wrapper around Unix.select in
order to be able to wait for events on a socket and/or a given delay and
execute a task when one of the waited events occured.
OCaml-fetch
[28-Nov-2006, version
0.1.0,
Beta]
A high level module to access files through various protocols (local files, ftp, samba, etc). It provides high-level functions for that.
OCaml-ftp
[28-Nov-2006, version
0.1.0,
Beta]
OCaml module to access files via ftp. It provides high-level functions for that.
OCaml-HTTP
[18-Feb-2005, version
0.1.3,
Beta]


A library inspired from perl's HTTP::Daemon that permits to write simple HTTP daemons in OCaml.
OCaml-mp3id3
[28-Nov-2006, version
0.2.1,
Beta]
OCaml functions for manipulating mp3 id3 tags.
ocaml-osm-route
[03-Jun-2008,
Development code]
A quite simple program to do some basic routing over Open Streat Map maps. It parses an .osm.bz2 file, creates a compact data structure in memory (which is saved into a cache to speed up next searches), finds the OSM nodes closest to the source and goal points given as (latitude, longitude) couples, does the routing itself, prints it on the screen and saves it in .osm XML format (for example to load it into JOSM).
OCaml-Packrat
[23-Jan-2007, version
0.5.1,
Beta]
Packrat parser generator for OCaml.
OCaml-RSS
[10-Jun-2005, version
0.4,
Beta]
A library providing functions to parse and print RSS 2.0 files. Comes with a graphical editor and a cameleon2 plugin.
OCaml-SOAP
[20-Sep-2002, version
0.2,
Beta]
A library which can be used to build web services using SOAP.
OCaml-TDL
[31-Mar-2004, version
0.4,
Beta]
A small OCaml library providing functions to parse and print TODO lists in XML files.
OCamlAgrep
[05-Feb-2002, version
1.0,
Stable]
Implements the Wu-Manber algorithm for string searching with errors (like in agrep).
ocamldap
[05-Oct-2005, version
2.1.5,
Stable]

LDAP bindings for ocaml.
OCamlDB
[09-Aug-2001, version
0.2,
Beta]
This is an early release of a DBMS driver for Objective Caml. There is a generic interface that must be instantiated with a so-called low level driver. Currently, there is only a driver for the Adabas DBMS.
OCamlFd
[09-Mar-2009, version
1.1.0,
Beta]
OcamlFd is an extension library for the OCaml language, providing miscellaneous utility functions involving UNIX file descriptors.
ocamlgraph
[01-Mar-2004, version
0.92,
Beta]

A graph library. Provides several graph data structures and several graph algorithms. Algorithms are written independently of the graph data structure (using functors).
OCamlNAE
[04-Jun-2008, version
0.10,
Beta]
The OCaml Network Application Environment is a project to provide a
modular framework of libraries in Objective Caml to support the
development of concurrent, single-thread-reactive network application
servers with a functional programming style.
OCamlNAE nx
[04-Jun-2008, version
0.0,
Alpha]
"Network extensions" library for OCamlNAE, which is a set of low-level interfaces designed for advanced network programming. The extension includes: extended socket interface (supports more options, and UDP with multicast), I/O event multiplexing (with Unix.select).
OCamlnet
[23-Mar-2009, version
2.2.9,
Mature]


A collection of modules for the Objective Caml language which focus on application-level Internet protocols and conventions.
ocfgc
[28-Dec-2005, version
0.4.1,
Beta]
A parser generator for ordered context free grammars (OCFG) based on GLR (Generalized LR) parsing, also known as Tomita's parsing.
Odot
[19-Dec-2005, version
0.5,
Beta]
Odot is a small OCaml library to parse and print Graphviz dot files. It comes with an additional module defining a Lablgtk2 box to display such graphs, and handle mouse clicks on nodes.
OGPF
[18-Mar-2004,
Alpha]
OCaml Genetic Programming Framework.
omlib
[17-Jun-2002,
Beta]
A small library to demonstrate monadic programming in OCaml.
Ooauth
[02-Jul-2008, version
0.1,
Beta]
an implementation of the OAuth
1.0 protocol for OCaml, as well as an OCaml binding to Skydeck web API
(providing access to your cell phone call log).
OOoWrite
[25-Nov-2003, version
0.2.0,
Beta]
OOowrite lets you write OpenOffice or StarOffice .sxw files from OCaml programs.
Opis
[19-Aug-2008,
Beta]

A functional-reactive approach for developing distributed systems in Objective Caml. In Opis, a protocol description consists of a reactive function (called event function) describing the behavior of a distributed system node. The event functions in Opis are built from pure functions as building blocks, composed using the Arrow combinators. This facilitates reasoning about event functions both informally and using interactive provers. For example, this approach leads to simple termination arguments.
Orpc
[29-Aug-2008, version
0.1,
Beta]

A tool for generating RPC
bindings from OCaml signatures. Orpc works with the ONC RPC implementation
in Ocamlnet; it is designed to be used in place of ocamlrpcgen. The
advantage is that you can use familiar OCaml syntax, most OCaml data types,
exceptions, and labeled/optional function arguments. In addition orpc can
generate tracing/pretty-printing code from a signature, and it permits
asynchronous clients and servers to be written using the Lwt threads
library.
Ostap
[04-May-2006, version
0.1,
Beta]

Ostap is an OCaml module to provide a set of parser combinators. The name of this library originates from Ostap Bender --- the central character of Ilya Ilf and Eugene Petrov's comedy "The Twelve Chairs". Bender is generally referred to as "The Great Combinator" since the word "combinator" in Russian also means "a swindler", "a sly man" etc.
Additionally to the common set of parser combinators Ostap provides a camlp4 syntax extension pa_ostap.cmo to embed grammar expressions written in BNF-like style into OCaml code. Another feature of pa_ostap is that it allows to consider streams as objects and so makes integration of lexers and parsers simpler. Please have a look at the documentation for details.
OUnit
[01-Aug-2008, version
1.0.3,
Stable]

Unit test framework for ocaml. It is based on HUnit, a unit testing framework for Haskell.
Overflow
[08-Nov-2002,
Beta]
A module redefining common operations and raising an exception in case of overflow.
pa_polymap
[19-Oct-2007,
Beta]

This is a tiny module combined with a camlp4 extension, which allows you to define polymorphic mappings, where the type of the data depends on the key.
parallele
[10-Aug-2001,
Beta]
Library for distributed computing in OCaml.
passwdgen
[13-Jul-2004, version
0.1,
Beta]
Password generator will return a password of configurable length. It can add special characters, digits, and capital letters to the password as well. The password is more human readable than a completely random secure password. The number of digits, special characters and capital letters is also configurable.
Patricia trees
[09-Aug-2001,
Stable]
Efficient sets and maps over integers, from a paper by Chris Okasaki.
Persil
[03-Nov-2003, version
0.2.1,
Beta]

A persistent library for Ocaml. PersiL could help you to handle persistent data in your application (data which survive the end of the program).
Pocengine
[14-Mar-2005, version
0.2.0,
Beta]

A game engine to help creating more games more easily.
The engine is written mainly in Ocaml with some XML and LUA.
POMAP
[09-Aug-2001, version
2.9.8,
Stable]
Library for maintaining partially ordered maps.
Preludeml
[21-Jan-2009,
Development code]
OCaml stdlib replacement with a Haskellish flavour.
Purely Functional Data Structures
[09-Aug-2001, version
1.0.6,
Stable]
Okasaki's Purely Functional Datastructures in OCaml.
PXP
[05-Feb-2009, version
1.2.1,
Mature]


Polymorphic XML parser.
React
[20-Jan-2009, version
0.9.0,
Beta]

React is an OCaml module for
functional reactive programming (FRP). It
provides support to program with time varying values : applicative
events and signals. React doesn't define any primitive event or
signal, this lets the client chooses the concrete timeline.
Recursive
[04-Jun-2002, version
2002-08-08,
Beta]
Recursive is a tiny OCaml module that helps the programmer to manipulate cyclic structures (such as recursive types or finite automata) with maximal sharing and unique representation.
Regexp
[20-Feb-2002, version
0.3,
Beta]

A library, entirely written in OCaml, for manipulation of regular expressions and string searching.
RES
[23-Mar-2009, version
3.1.1,
Stable]
Library for automatically resizing contiguous memory (arrays and strings).
Resumable exceptions in plain OCaml
[16-Jun-2006,
Beta]

Resumable exceptions are the strict generalization of regular exceptions,
which lets the exception raising form return a value and so the
computation may continue. It's the exception handler that decides
either to abort the exceptional computation or to resume it with a
particular value. We show a conservative and elementary implementation of resumable
exceptions in OCaml: the implementation is a self-contained 100% pure
OCaml library.
rpc
[17-Jun-2002, version
0.3.2,
Stable]

RPC is a package supporting the Sun RPC protocol. RPC programs, procedures, clients, and servers can be dynamically represented and modified. Of course, there is also a classical RPC generator which generates functions doing the language mapping from XDR values to language values and vice versa.
Rtime
[20-Jan-2009, version
0.9.0,
Beta]

Rtime is an OCaml module implementing timelines for React [1]. It manages time stamp
events, delayed events and delayed signals along timelines. The client chooses the
concrete timeline by providing an absolute notion of time. Running the timeline at the
appropriate pace is left to the client.
saXml
[24-Mar-2003,
Alpha]
A couple of files for turning basic XML documents (channels) into an XML stream.
SCAMPI
[10-Aug-2001, version
1.2,
Stable]
Scampi (Simple CAml to MPI interface) is small library allowing Caml programs to make calls to MPI-1 communication routines. For now only a few calls are provided (basically, getting communicator size, rank and making synchronous and asynchronous send/receive of polymorphic data plus a couple of collective comm), but it is expected that subsequent versions will enlarge the set of provided bindings. This first version, however, effectivily allows building parallel Caml programs running in SPMD mode on a network of workstations for example.
SDFlow
[16-Oct-2007, version
0.01,
Alpha]

A high-level combinatorial dataflow programming library based upon destructive lazy streams.
Sentence Segmenter
[03-Jul-2006,
Alpha]
This library can be used to segment Newspaper style (english) text articles into sentences. It uses the Ocaml lexer with a simple set of lexical rules to classify those periods ('.') in the text that end sentences.
Sexplib
[19-Oct-2007, version
3.0.1,
Stable]
Library for automated conversion of OCaml-values to and from S-expressions.
SimpleSOAP
[24-May-2005, version
0.1.1,
Alpha]

SimpleSOAP is an early, experimental SOAP client for Objective CAML.
SOSS
[13-Nov-2006, version
0.1,
Beta]
SOSS is an implementation of a SOAP server for OCaml. It is designed to allow a service, developed in OCaml, to be made available as a SOAP service with minimal effort.
Splay trees
[10-Aug-2001, version
0.4.2,
Beta]
Binary trees where often accessed items tend to be near the root.
SPPoC
[21-Jun-2004, version
1.2.1,
Beta]
Symbolic Parameterized Polyhedral Calculator.
Stemmer
[21-Jul-2003, version
0.1.0,
Beta]
An implementation of the Porter stemming algorithm for OCaml.
STMlib
[07-Mar-2007, version
0.0.1,
Alpha]

This is a user-space implementation of STM (Software Transactional Memory)
library for OCaml. It's mainly inspired by the STM library of Haskell, with
some exceptions due to the different nature of languages and different
strategies of implementation.
Stred
[28-Nov-2002,
Beta]
Provides an ability to interactively edit/navigate arbitrary Ocaml data structures.
Timbuk
[05-Apr-2002, version
2.0,
Stable]
Timbuk is a collection of tools for achieving proofs of reachability over Term Rewriting Systems and for manipulating Tree Automata (bottom-up non-deterministic finite tree automata).
Tony
[09-Aug-2001, version
0..9.1,
Beta]
Tony is a simple XML parser and pretty printer for Objective Caml. While you would most likely use it as a library it comes for demonstration purposes as an application. Tony reads an XML file and pretty prints it nicely. The parser is implemented using Lex and Yacc, the pretty printer using Philip Wadler's pretty-printing algebra. Today more complete (and complex) XML parsers for OCaml exist; Tony is still useful if you want to cover the basic case.
Tophide
[08-Apr-2008, version
1.0.0,
Stable]


Hides toplevel values whose name starts with an underscore.
Trie
[09-Aug-2001,
Beta]
Implementation of tries (maps over lists).
ulex
[16-Oct-2003, version
0.4,
Beta]
Ulex is a lexer generator for Unicode and OCaml.
Uuidm
[11-Jun-2008, version
0.9.0,
Beta]

Uuidm is an OCaml module implementing 128 bits universally unique
identifiers version 3, 5 (name based with MD5, SHA-1 hashing) and 4
(random based) according to RFC 4122.
Uuidm is made of a single, independent, module and distributed under
the new BSD license.
Vec
[25-Sep-2008, version
2.02,
Mature]

An Ocaml implementation of extensible
arrays. The implementation is functional, based on balanced trees (and on the code for Set and Map).
Vprint
[24-Aug-2007, version
0.01,
Alpha]

A runtime value printer for OCaml, extremely experimental at the moment, use at your own risk.
Wallace
[14-Mar-2003, version
2002/11/02,
Beta]
Wallace is a generic subtyping-constraint-handling library. It deals with constraint solving and simplification, and it is parameterized by the definition of a type algebra. Its goal is to serve as a plug-in component in the design of a constraint-based type-checker, regardless of the programming language being analyzed.
WDialog
[07-Nov-2005, version
2.1.2,
Stable]


WDialog is an advanced system to create dialog-centric web applications.'
Weaktbl
[15-Oct-2007, version
0.02,
Beta]

A weak hash table library for OCaml, with an interface compatible with the standard Hashtbl library.
Weblogs
[16-Oct-2006, version
2.1,
Stable]
Weblogs is an OCaml module for importing weblogs from Apache or IIS web servers.
Xdialog2Ocaml
[27-Feb-2006,
Beta]
To use Xdialog from OCaml.
Xhtml
[09-Apr-2004,
Beta]
XHTML is a O'Caml module for creating valid XHTML 1.1 (and XHTML 1.0) documents. The validity of the pages is guaranteed by the O'Caml type system. (NB: at the time of writing, forms support was not complete, only basic forms are implemented. Image maps are also not implemented yet.)
XML Light
[14-Oct-2003, version
2,
Stable]
XML Light is a minimal XML parser & printer for OCaml. It provide functions to parse an XML document into an OCaml data structure, work with it, and print it back to an XML document.
Since version 2, XML Light add also support for DTD and PCDATA.
xmlm
[18-Mar-2008, version
1.0.0,
Stable]

Xmlm is an OCaml module providing streaming XML input/output. It aims
at making XML processing robust and painless. The streaming interface
can process documents without building an in-memory representation. It
lets the programmer translate its data structures to XML documents and
vice-versa. Functions are provided to easily transform arborescent
data structures to/from XML documents.
XmlRpc-Light
[29-Jan-2009, version
0.6.1,
Beta]
XmlRpc-Light is an XmlRpc client written in OCaml. It requires Xml-Light and Ocamlnet.
XmlRPCServer
[02-Feb-2003, version
0.1.0,
Beta]

XmlRPCServer is a server side implementation for the XmlRPC package developed by Shawn Wagner. This package provides methods to transform between OCaml data-types and their XmlRPC representation, and visa versa. In addition it provide the client side functionality which enables OCaml clients to call servers written in other languages using XmlRPC. However the current version of the package does not support writing the server side in OCaml, unless you do most of the work yourself.
Xpath
[04-Sep-2000, version
2000-09-04,
Beta]
This package implements the XPath recommendation; XPath is a simple query language for XML. A compact XPath expression can perform a relatively complex search on the document tree. XPath is used by XLink and XSLT.
The package is modularized and functorial: the evaluator is a functor taking as argument an implementation of the XPath Data Model as defined in the recommendation. The package include a lightweight implementation, build from the Pxp document tree. A future version will include a Data Model implementation working directly on this document tree.
Xsetxmap
[22-Apr-2008, version
2008-04-21,
Development code]
An unfunctorized version of Set and Map.
xstr
[07-Jul-2002, version
0.2.1,
Beta]
Thread-safe implementation of string searching/matching/splitting.
Yacclib
[01-Dec-2005, version
0.4,
Beta]
Yacclib is a small OCaml library to parse and print OCamlyacc .mly files. It can also print dot graphs from these files. It comes with a graphical editor for .mly files.
Yacfe
[03-Nov-2008, version
0.2,
Beta]
Yet Another C/C++
Front-End, which is an OCaml API to write style-preserving source-to-source
transformations such as refactorings on C or C++ source code.
Zen
[25-Sep-2006, version
2.2,
Stable]

This toolkit offers a few fundamental structures useful for computational linguistics. It is implemented in Pidgin ML, which is a core subset of the Objective Caml programming language under the so-called revised syntax.