Version française
Home     About     Download     Resources     Contact us    

The Caml Hump: General purpose libraries :: Data structures

Applications written in Caml
/UbiEst/ [29-Jan-2008, version 1.5, Stable]
/UbiEst/ is intended to be a indexer, allowing *structural* and *compound* searches into a "bunch" of documents (files). What is an indexer ? An indexer is a program recording the occurrences of words among documents and enable to point on them (quickly if possible). A detailled explanation is available in the distribution, but in two or three words... By *structural* indexing, we mean that /UbiEst/ not only maps words onto their locations, but also structures of the indexed documents. By *compound* indexing, we mean that /UbiEst/ does not allow to request to find occurrences of simple words among the indexed document. requests can be combined by the mean of operators. By combining requests, you not only get simple occurrences of words, but rather /extends/ (i.e. piece of text) containing information fitting you global request. /UbiEst/ is developped in Objective Caml and a graphical user interface based on Gtk (Lablgtk) is available.
Bindings with C libraries
Ancient [02-Jun-2009, version 0.9.0, Beta] Has a documentation
Ancient is an OCaml module that allows you to use in-memory data structures which are larger than available memory and so are kept in swap. If you try this in normal OCaml code, you'll find that the machine quickly descends into thrashing as the garbage collector repeatedly iterates over swapped memory structures. This module lets you break that limitation. Of course the module doesn't work by magic :-) If your program tries to access these large structures, they still need to be swapped back in, but it is suitable for large, sparsely accessed structures. Secondly, this module allows you to share those structures between processes. In this mode, the structures are backed by a disk file, and any process that has read/write access that disk file can map that file in and see the structures.
Native OCaml libraries
Baire [09-Sep-2002, version 0.0.0, Alpha] Has a documentation
A data structures library.
Camlp4 extensions
Bindlib [05-Oct-2006, version 3.0, Stable] Has a documentation
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.
Camlp4 extensions
Bitstring [25-Jan-2010, version 2.0.2, Stable]
The ocaml-bitstring project adds Erlang-style bitstrings and matching over bitstrings as a syntax extension and library for OCaml. (This project was formerly known as "bitmatch"). You can use this module to both parse and generate binary formats, files and protocols. Bitstring handling is added as primitives to the language, making it exceptionally simple to use and very powerful.
Native OCaml libraries
Bitv [09-Aug-2001, version 0.5, Beta] Has a documentation
A bit vectors library.
Native OCaml libraries
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.
Camlp4 extensions
Col [27-Apr-2006, Beta] Has a documentation
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.
Author: Martin Jambon.
Courses
Lecture notes about data structure in Objective Caml (in French).
Author: Jocelyn Serot.
Native OCaml libraries
Dllist [07-Sep-2004, version 2004-08-27, Beta]
A mutable, circular, doubly linked list library.
Native OCaml libraries
Dum [13-Oct-2008, version 1.0.0, Stable] Has a documentation
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.
Author: Martin Jambon.
Native OCaml libraries
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.
Author: Denis Bueno.
Native OCaml libraries
GrabBag [12-Jan-2004, Development code]
A collection datastructure. Unordered insertion, uniformly random removal.
Author: Brock Wilcox.
Native OCaml libraries
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.
Author: Mario Pernici.
Camlp4 extensions
Hashtbl syntax extension [30-Jun-2003, Development code]
Camlp4 syntax extension to get more {easy,perlish} usage of Hashtbl module hash tables.
Native OCaml libraries
heap [21-Feb-2003]
Heaps, imperative and functional implementations.
Camlp4 extensions
Lightweight records [12-Nov-2002, Development code]
An extension with camlp4 that allows one to use lightweight records in OCaml.
Author: Nicolas Oury.
Native OCaml libraries
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.
Author: Jesse Guardiani.
Development tools
Moca [18-Jun-2012, version 0.7.0, Beta] Has a tutorial
Mocac is a generator of construction functions for Caml concrete data types with algebraic invariants and maximal sharing facilities. Algebraic invariants are specified by using keywords denoting equational theories like commutativity and associativity. The construction functions generated by Mocac allow each equivalence class to be represented by a unique value.
Toys - Examples
N-edged undirected graphs [07-Mar-2008, Beta]
An OCaml program that outputs the set of N-edged graphs (polynema) to a standard .dot file.
Development tools
OCaml Batteries Included [09-Jan-2013, version 2.0.0, Stable]
Batteries Included is a candidate standard development platform for OCaml.
Authors: Bluestorm, Edgar Friendly, and David Teller.
Native OCaml libraries
OCaml CSV [04-Jul-2011, version 1.2.2, 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.
Native OCaml libraries
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).
Author: David Mentre.
Native OCaml libraries
OCaml-RDF [09-Oct-2012, version 0.2, Beta]
OCaml-RDF is an OCaml library to manipulate RDF graphs.
Author: Maxence Guesdon.
Native OCaml libraries
ocamlgraph [01-Mar-2004, version 1.3, Stable] Has a Godi package
A graph library. Provides several graph data structures and several graph algorithms. Algorithms are written independently of the graph data structure (using functors).
Native OCaml libraries
OGPF [18-Mar-2004, Alpha]
OCaml Genetic Programming Framework.
Author: Brock Wilcox.
Native OCaml libraries
omlib [17-Jun-2002, Beta]
A small library to demonstrate monadic programming in OCaml.
Native OCaml libraries
Oni [24-Nov-2010, version 1.00, Stable] Has a Godi package
A modular framework of Objective Caml libraries comprising general purpose utilities and functional data structures, a more flexible abstraction of the system network sockets layer than the standard library, and modules to support the development of concurrent, single-threaded network application services with a functional programming style.
Author: James Woodyatt.
Native OCaml libraries
Patricia trees [09-Aug-2001, Stable]
Efficient sets and maps over integers, from a paper by Chris Okasaki.
Native OCaml libraries
Persil [03-Nov-2003, version 0.2.1, Beta] Has a documentation
A persistent library for Ocaml. PersiL could help you to handle persistent data in your application (data which survive the end of the program).
Development tools
Piqi [21-Feb-2013, version 0.6.0, Beta]
Protocol Buffers, JSON and XML serialization".
Author: Anton Lavrik.
Native OCaml libraries
POMAP [09-Aug-2001, version 2.9.8, Stable]
Library for maintaining partially ordered maps.
Author: Markus Mottl.
Native OCaml libraries
Purely Functional Data Structures [09-Aug-2001, version 1.0.6, Stable]
Okasaki's Purely Functional Datastructures in OCaml.
Author: Markus Mottl.
Native OCaml libraries
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.
Author: Alain Frisch.
Native OCaml libraries
RES [23-Mar-2009, version 3.1.1, Stable]
Library for automatically resizing contiguous memory (arrays and strings).
Author: Markus Mottl.
Native OCaml libraries
Sam [14-Apr-2011, Beta]
The module Sam allows common operations on sparse associative memories according to the model introduced here: http://www.vincent-gripon.com/?p=92
Author: Vincent Gripon.
Native OCaml libraries
SDFlow [16-Oct-2007, version 0.01, Alpha] Has a documentation
A high-level combinatorial dataflow programming library based upon destructive lazy streams.
Author: Zheng Li.
Camlp4 extensions
Sexplib [17-Apr-2012, version 7.0.5, Stable]
Library for serializing OCaml values to and from S-expressions.
Author: Markus Mottl.
Native OCaml libraries
Splay trees [10-Aug-2001, version 0.4.2, Beta]
Binary trees where often accessed items tend to be near the root.
Native OCaml libraries
STMlib [07-Mar-2007, version 0.0.1, Alpha] Has a documentation
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.
Author: Zheng Li.
Native OCaml libraries
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).
Native OCaml libraries
Trie [09-Aug-2001, Beta]
Implementation of tries (maps over lists).
Native OCaml libraries
Uuidm [19-Mar-2012, version 0.9.4, Beta] Has a documentation
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.
Author: Daniel Bunzli.
Native OCaml libraries
Vec [25-Sep-2008, version 2.02, Mature] Has a documentation
An Ocaml implementation of extensible arrays. The implementation is functional, based on balanced trees (and on the code for Set and Map).
Author: Luca de Alfaro.
Native OCaml libraries
Weaktbl [15-Oct-2007, version 0.02, Beta] Has a documentation
A weak hash table library for OCaml, with an interface compatible with the standard Hashtbl library.
Author: Zheng Li.
Native OCaml libraries
Xsetxmap [22-Apr-2008, version 2008-04-21, Development code]
An unfunctorized version of Set and Map.
Author: Berke Durak.