Markus Mottl

Most but not all of the open source software I develop or maintain can be found on my GitHub page. The GitHub project homepages will all contain more detailed information and documentation.

Below you can find a complete list of all of my public projects with links to external repositories and documentation.

OCaml Software

My OCaml software generally uses Oasis for package specification to make installation and package management as easy as possible on all platforms supported by OCaml. I also release OPAM packages for that purpose.

Machine Learning

GPR - Gaussian Process Regression

Gaussian processes are a modern Bayesian approach to machine learning for inferring nonlinear functional relationships within data. GPR offers a library and a command-line application to use some of the latest computationally tractable approximations of Gaussian processes for regression problems.

AIFAD - Automated Induction of Functions over Algebraic Data Types

This application generalizes decision tree learning to algebraic data types and can hence classify highly structured data.

Scientific Computing

Type-driven Code and Protocol Generation

Bin_prot - Binary Protocol Converters Derived from Type Definitions

This library provides numerous functions for reading and writing highly efficient and safe binary protocols. A key feature is its use of Camlp4 and Type_conv to generate such readers and writers automatically from OCaml type definitions. The generated code will not crash on illegal input, can be enriched with user-defined semantic checks, and is fast enough to saturate gigabit connections for both reading and writing of highly structured values.

Bin_prot, most of which I have developed at Jane Street Capital, is now available as the Jane Street Bin_prot library.

Database Connectivity

String Processing

PCRE-OCaml - Perl Compatibility Regular Expressions for OCaml

This OCaml library interfaces the C-library PCRE. It provides efficient matching, substitution, and splitting of strings, similar to regular expression functionality in Perl.

Data Structures and Programming Patterns

POMAP - Purely Functional Partially Ordered Maps

This library provides functions for creating and manipulating maps from partially ordered keys to associated data in a purely functional way.

Pure-fun - Purely Functional Data Structures

Pure-fun is a translation of Chris Okasaki's Purely Functional Data Structures from SML to OCaml.

ocaml-prog-pats - Programming Patterns for OCaml

This project contains OCaml "design patterns", programming tricks, and similar that I have come across in the past.

Build Tools

ocaml-makefile - A generic Makefile for OCaml

This generic Makefile contains numerous flags and build targets for building OCaml applications and libraries with little effort. It should scale from small to medium-sized projects. This tool is mature and stable, but is only in maintenance mode now. More modern build systems like OMake or the standard OCaml build tool ocamlbuild should be considered instead, since traditional make does not scale to complex, large systems.


LambdaProlog is a higher-order logic programming language. Its features like HOAS (Higher-Order Abstract Syntax), higher-order unification, and intuitionistic implication make it particulary suitable for representing and manipulating programs in a highly declarative way. Do you need a function for determining whether some arbitrary data structure contains another arbitrary one? LambdaProlog can do just that in one short, type-safe line of code:

contains T ST :- T = F ST, not (pi x\ F x = T).

Program Transformation

Fun-trans - Transformation of Functional Programs

I really enjoyed my programming experience with LambdaProlog during my Master's thesis. Fun-trans is the implementation of the transformation framework described therein.



Vim Files

Vim is my editor of choice, and I maintain a couple of associated configuration files (e.g. for OCaml syntax highlighting). These files and other plugins I frequently use can be found here: