This page lists software and software documentation that I wrote or co-wrote, often using the OCaml programming language. Most of the projects are free software.
See also my personal activity on GitHub as myself (mjambon) and within MyLife (MyLifeLabs).
Software documentation | |
Adjustable type definitions for data exchange | An introduction to ATD, biniou, yojson and atdgen. |
---|---|
How to customize the syntax of OCaml, using Camlp5 | A Camlp5 tutorial illustrated with many examples and programming guidelines. |
Software | |
All of the following packages are under development or maintained. | |
Atdgen | Atdgen generates optimized OCaml boilerplate code for JSON and biniou IO from type definitions. |
Atd | Atd is a type-definition syntax designed for cross-language interoperability. |
Yojson | Yojson is a library for data interchange using the JSON format. Supersedes json-wheel. |
Biniou | Biniou is a binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve. |
Cppo | Cpp for OCaml |
Nproc | Multi-processing library providing process pools for Lwt. |
dutop | disk usage top. |
sampl | like "head" or "tail" but picks 10 random lines from large data files. |
wcl | "wc -l" for the impatient, with estimation of total line count as it progresses. |
Easy-format | Easy-format is a functional layer relying on the standard Format module to produce indented text. |
Mikmatch | Mikmatch is a package that extends the pattern matching syntax of OCaml with regular expressions, thus providing unique shortcuts for text manipulation in OCaml programs together with safety, readability and efficiency. |
Camlmix | Camlmix is a general purpose preprocessor using OCaml as a language to fill the gaps of templates. |
ocamlscript | ocamlscript compiles scripts into native code for optimal speed and ease of use. [Camlp4 3.10 port: 3.10.1] |
Caml2html | Caml2html is a program that converts OCaml source files into colored HTML pages. Also available as a library. Originally written by Sébastien Ailleret. |
json-wheel (superseded by Yojson) | json-wheel is a library for data interchange using the JSON format. |
json-static (superseded by Atdgen) | json-static is a syntax extension that goes on top of json-wheel and translates type definitions into converters from/to untyped JSON data, much like col does for CSV files. |
Asciipict | converts images to ASCII art! See for example martin.png. Download asciipict.tar.bz2 or asciipict.tar.gz |
Unpurple | unpurple
removes purple fringing from digital photos.
See examples.
|
Upnym | Upnym is a web application that helps pick a name for a new brand. It offers as-you-type suggestions and name availability lookups for .com, Facebook and Twitter. [closed source] |
Dormant or unmaintained software | |
Col | 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. The documentation is not complete yet but you can help. Old version for OCaml 3.09: col-1.1.1.tar.bz2 or col-1.1.1.tar.gz [license | changes]. Col is now maintained by Philippe Veber. |
Biblio.php | Biblio.php is a MediaWiki extension allowing to insert bibliographic references into wiki pages by only giving a reference (PMID or ISBN). |
Smaller programs | |
Tophide | Hides toplevel values whose name starts with an underscore. Primarily for use with Camlp4 syntax extensions. Download tophide-1.0.0.tar.bz2 or tophide-1.0.0.tar.gz [license|documentation|development]. |
Camlmix Toolbox | The Camlmix toolbox is a collection of short code samples. They may serve as a source of inspiration for Camlmix users and beginners using OCaml as a scripting language. |
Hashtbl2 | Hashtbl2 is useful for using hash tables as a clustering engine, i.e. for grouping several objects under the same key, retrieving a non-redundant list of keys in one pass, and much more. View the documentation, hashtbl2.mli, hashtbl2.ml, or download hashtbl2.tar.gz. License: Public Domain. |
Opaque | This short module provides a trick to force the compiler to
distinguish different kinds of int s or string s.
Useful in complex programs with lots of indexed containers such as
hash tables.
View the documentation,
opaque.mli,
opaque.ml, or download
opaque.tar.gz. License: Public Domain.
|
Latin1 | Provides functions for comparing ASCII or Latin1 (ISO 8859-1) characters and strings according to the alphabetical order like in the dictionaries. [view|save]. License: Public Domain. |
Gstring | An example of a mixed mutable/immutable string type, and an interface to a few basic functions from the standard library. [view source|browse files]. License: Public Domain. |
Phys | Polymorphic hash table using physical equality to compare keys. [view source]. License: Public Domain. |
Infix | Provides support for alphanumeric infix operators in OCaml. Now available through P4ck. [view|save]. [Camlp4 3.10 port: no] |
Forin |
Provides a foreach-style replacement of List.iter .
Now available through P4ck.
[view|save].
[Camlp4 3.10 port: no] License: Public Domain.
|
Forstep | Provides an extension of "for" loops with an optional "step" parameter. Now available through P4ck. [view|save]. [Camlp4 3.10 port: no] License: Public Domain. |
Repeat | Provides a tiny extension of OCaml: "repeat" loops. Now available through P4ck. [view|save]. [Camlp4 3.10 port: no] License: Public Domain. |
Memo | Provides a syntax extension for functions with memoization. Also available through P4ck. [3.09-compatible view|save] [3.10-compatible view|save]. License: Public Domain. |
TryFinally | A small syntax extension which provides a "try ... finally ..." construct. Available through P4ck. [3.09-compatible: view|save] [3.10-compatible: view|save]. License: Public Domain. |
Bounds | An incredibly long syntax extension which allows out-of-bounds accesses of arrays and alike to be reported with the exact location in the source code. Available through P4ck. [README|view|file|archive|tree]. Camlp4 3.10 port: not needed for fresh code since ocamlopt 3.10 can dump stack backtraces. Andrew Schein offers a syntax extension for backward compatibility. License: BSD-style. |
Camlp4find | Camlp4find is a shell script that can be used as a replacement for the camlp4o or camlp4r commands and takes advantage of syntax packages that were installed with ocamlfind. [Camlp4 3.10 port: no] License: Public Domain. |
Hackish amusements | |
ICFP contest 2004 | Some documentation about my participation in the ICFP programming contest 2004. |
Quines | A quine is a self-reproducing program. It generates a
copy of
its own source code as its complete output.
Here is a small one in OCaml: quine.ml.
Another quine is here, although it only works when
executed with ocaml q.ml and outputs to stderr...
Bonus: a true quine written in Bourne Shell
(compact form).
Meta-bonus: a complete Camlmix quine quine.camlmix.
|
C/OCaml Hello | This is a "Hello World!" polyglot program which is written in C and in OCaml at the same time. |