• en

OCaml Planet

The OCaml Planet aggregates various blogs from the OCaml community. If you would like to be added, read the Planet syndication HOWTO.

946 blog posts are available. You can read the 30 more recent ones below or view older ones.

OCaml Workshop and Strange Loop Talks — Mindy Preston, Oct 07, 2015

As a result of great encouragement from colleagues and friends, I gave a few talks in September.

Persistent Networking with Irmin and MirageOS, which I gave at the OCaml Workshop, is a talk on sticking a persistent database into various levels of the network stack. (It includes demonstrations from What a Distributed, Version-Controlled ARP Cache Gets You, as well as an Irmin-ified NAT device that I haven’t yet written up here.) The slides for my OCaml Workshop talk are also available.



TodoMVC: a reactive version — Ocsigen blog (Stéphane Legrand), Oct 07, 2015

TodoMVC is a project which offers the same Todo application implemented using MV* concepts in most of the popular JavaScript MV* frameworks. One of the aims of TodoMVC is to enable a fair comparison between several frameworks, by providing implementations of the same application. A js_of_ocaml (JSOO) version is now available:

Our version is powered by the React module for functional reactive programming (FRP).

In this post, we outline the architecture of our implementat…


Weekly News — OCaml Weekly News, Oct 06, 2015

  1. User Report: Cygwin32 OPAM for MinGW OCaml 64
  2. Pijul 0.1
  3. Post-doctoral position available at ENSTA-ParisTech - Secure-OCaml project
  4. Jane Street's ppx rewriters
  5. Other OCaml News

Full Time: Software Developer (Functional Programming) at Jane Street in New York, NY; London, UK; Hong Kong — GitHub Jobs, Oct 05, 2015

Software Developer

Jane Street is a proprietary quantitative trading firm, focusing primarily on trading equities and equity derivatives. We use innovative technology, a scientific approach, and a deep understanding of markets to stay successful in our highly competitive field. We operate around the clock and around the globe, employing over 400 people in offices in New York, London and Hong Kong.

The markets in which we trade change rapidly, but our intellectual approach changes faster still…


List comprehensions in C++ via the list monad — Shayne Fletcher, Oct 04, 2015


As explained in Monads for functional programming by Philip Wadler, a monad is a triple $(t, unit, *)$. $t$ is a parametric type, $unit$ and $*$ are operations:

val unit : α -> α t
val ( * ) : α t -> (α -> β t) -> β t
We can read expressions like

$m * \lambda\;a.n$

as, "perform computation $m$, bind $a$ to the resulting value, and then perform computation $n$". Referring to the signatures of $*$ and $unit$, in terms of types we see $m$ has the type &alpha…


Weekly News — OCaml Weekly News, Sep 29, 2015

  1. New release of Menhir (20150921)
  2. Allocation profiler for bytecode interpreter
  3. Core Suite 113.00.00
  4. ppx_deriving 3.0
  5. Jane Street is hiring interns!
  6. ocaml-4.02.3 for iOS
  7. ocaml-webmachine
  8. ocaml-d3
  9. polymorphic sets?
  10. Stb_truetype, Stb_image, Stb_image_write 0.1
  11. Assimp for OCaml 0.1

An Allocation Profiler for OCaml Bytecode Interpreter — KC Sivaramakrishnan, Sep 23, 2015

This post describes a simple flat allocation profiler for OCaml 4.02 bytecode interpreter.

OCaml is a strongly typed functional language with automatic memory management. Automatic memory management alleviates the need to manually deal with memory memory management, and by construction, avoids a large class of bugs. However, abstractions are not free in OCaml. Unlike MLton, a whole-program optimizing Standard ML compiler, which I used to hack on in an earlier life, in OCaml, one needs to be par…


Weekly News — OCaml Weekly News, Sep 22, 2015

  1. Quick Check like testing for OCaml?
  2. fmt 0.7.0
  3. The OCaml MOOC starts in one month
  4. OCaml 2015 talks
  5. Faster byte code
  6. Other OCaml News

Governance of OCaml.org — Amir Chaudhry, Sep 18, 2015

Governance Screenshot

For several months, I’ve been working with the maintainers of OCaml.org projects to define and document the governance structure around the domain name. I wrote about this previously and I’m pleased to say that the work for this phase has concluded, with the document now live.

Recurring themes

There were some recurring themes that cropped up during my email discussions with people and I thought it would be useful to present a summary of them, along with my thoughts. Broadly, the discus…


Weekly News — OCaml Weekly News, Sep 15, 2015

  1. Dynlink
  2. OCaml to Readable Javascript Playground
  3. 20th anniversary
  4. New ocamlbuild manual -- a usable draft
  5. Quick Check like testing for OCaml?
  6. new mailing list for ocaml-containers users and developers
  7. Job: OCaml Engineer in Nancy, France
  8. Other OCaml News

Experiment with OCaml Multicore and Algebraic Effects — KC Sivaramakrishnan, Sep 10, 2015

I recently gave a talk on Algebraic Effects in OCaml at the OCaml Workshop 2015. The extended abstract and the slides from the talk are available here. The slides should provide a gentle introduction to programming with algebraic effects and handlers in OCaml. The examples from the talk (and many more!) are available here.

Algebraic effects in OCaml are available as a part of the multicore OCaml compiler as well as a standalone feature incorporated into vanilla OCaml. The experimental compilers…


Weekly News — OCaml Weekly News, Sep 08, 2015

  1. NaN representations
  2. new mailing list for ocaml-containers users and developers
  3. OCaml 2015 talks
  4. [PATCH+PPX] Curried constructor
  5. POSIX time implementation
  6. Other OCaml News

Weekly News — OCaml Weekly News, Sep 01, 2015

  1. Open engineer & scientist positions at CEA LIST - LSL
  2. Adopting a Governance framework for OCaml.org
  3. We need a rich standard library distributed with OCaml, really
  4. OCaml opportunity with machine learning group

Weekly News — OCaml Weekly News, Aug 25, 2015

Tenth OCaml compiler hacking evening and OCaml/ML talks — OCaml Labs compiler hacking ( (OCaml Labs), Aug 20, 2015

We'll be meeting in the Computer Lab next Friday (28th August 2015) for another evening of compiler hacking. All welcome!

We'll also be having an afternoon of OCaml- and ML-related talks beforehand, with titles suspiciously similar to talks at the ML Workshop and OCaml Workshop the following week.

If you're planning to come along to either the talks or to compiler hacking, please add yourself to the Doodle poll. Further updates, if any, will be posted to the compiler hacking mail…


No (functional) experience required — Jane Street (Yaron Minsky), Aug 19, 2015

Jane Street is a serious functional programming shop. We use OCaml, a statically typed functional language for almost everything and have what is probably the largest OCaml codebase anywhere.

This leads lots of people to think that they shouldn't even bother applying, under the assumption that we are only interested in hiring deep functional programming gurus. I think people get to this conclusion in part because they think of functional languages, especially those with fancy type systems, as ar…


Haskell Engineer at Wagon (Full-time) — Functional Jobs (FunctionalJobs.com), Aug 18, 2015

We’re a team of functional programmers writing apps and services in Haskell (and Javascript). Yes, it’s true: Haskell is our main backend language. We also use functional programming practices across our stack.

Wagon is a great place to do your best work. We love to teach and learn functional programming; our team is humble, hard working, and fun. We speak at the Bay Area Haskell Meetup, contribute to open source, and have weekly lunches with interesting people from the community.


Announcing Lambdoc 1.0-beta4 — Dario Teixeira, Aug 17, 2015

I'm happy to announce the release of version 1.0-beta4 of Lambdoc, a library providing support for semantically rich documents in web applications. Though Lambdoc was designed with Ocsigen/Eliom integration in mind, it does not actually depend on the Ocsigen server or Eliom, and you may use it with other frameworks. In fact, you may find it useful outside the web application domain altogether.

An overview of Lambdoc's features may be found in previous posts announcing the beta1 and beta3 rel…


ocaml ffi bindings — Perpetually Curious (Tim McGilchrist), Aug 17, 2015

One thing that always comes up with your favourite language is how do you use libraries written in another language. Typically this involves needing to talk to a particular C library, either because it’s faster than a native one or just that it is already written.

For OCaml there is the ctypes library for binding to C libraries using pure OCaml. Written by the people at the good people at OCaml Labs http://ocaml.io

The core of ctypes is a set of combinators for describing the structure o…


Just-in-Time Summoning of Unikernels (v0.2) — Magnus Skjegstad, Aug 17, 2015

Jitsu - or Just-in-Time Summoning of Unikernels - is a prototype DNS server that can boot virtual machines on demand. When Jitsu receives a DNS query, a virtual machine is booted automatically before the query response is sent back to the client. If the virtual machine is a unikernel, it can boot in milliseconds and be available as soon as the client receives the response. To the client it will look like it was on the whole time.

Jitsu can be used to run microservices that only exist after they…


Summer Ocsigen releases — Ocsigen blog (Gabriel Radanne), Aug 17, 2015

We are happy to announce the releases of

We also welcome a new member in the ocsigen team, Vasilis Papavasileiou.

Key changes in the various releases:

  • PPX support for js_of_ocaml with OCaml >= 4.02.2. See documentation here.

    This was also the occasion to introduce a new syntax for object literals, and to improve the Camlp4 syntax (w.r.t. to locations). Both syntaxes emit the same code, and are perfectly compatible.


Merging OCaml patches — GaGallium (Gabriel Scherer), Aug 07, 2015

In Merging OCaml Patches I wrote a description of my personal process to merge OCaml patches (usually submitted as github pull requests) in the upstream repository (currently SVN). This description may be useful for external contributors to understand the process, and maybe meet me halfway by doing a bit of the work upfront.

In particular, as an external contributor, you

  • must add tests to the testsuite,
  • should write a proper changelog entry,
  • should rebase your PR into a good patch series …

OCaml Compiler Hacking: how to add a primitive — Cedeela (simon), Aug 06, 2015

I have been hacking on the OCaml compiler recently; in particular, I added some support for coloring warning/error messages. At some point during the discussion over this pull request, it became clear that colored output should only be enabled if stderr was an interactive terminal (in opposition to a regular file handle or whatnot). The compiler does not link with the Unix library, so I finally decided to add a primitive caml_sys_is_interactive. My purpose here is to explain how it works (from w…


Provably considered harmful — Andrej Bauer, Aug 05, 2015

This is officially a rant and should be read as such.

Here is my pet peeve: theoretical computer scientists misuse the word “provably”. Stop it. Stop it!

Theoretical computer science is closer to mathematics than it is to computer science. There are definitions, theorems and proofs. Theoretical computer scientists must understand mathematical terminology. The words “proof” and “provable” are in the domain of mathematical logic. A statement is provable if it h…


Release of OCaml-bitcoin 2.0 — OCamlCore Forge News ( (Dario Teixeira), Aug 05, 2015

This new release brings the API up-to-date with the latest versions of Bitcoin Core. It also features two new optional backends based on Cohttp and OCurl (contributed by Vincent Bernardoff). Finally, note that the code is now licensed under the LGPL 2.1 (W.O.L.E.).

Formally verifying the complexity of OCaml programs with CFML -- part 3 — GaGallium (Armaël Guéneau), Aug 03, 2015

In two previous blog posts (part 1 and interlude), I presented a set of notions to prove asymptotic complexity of OCaml programs, then an OCaml implementation of Okasaki's "binary random access lists". In this last blog post, I combine the two ideas, and present a formalization of binary random access lists, using CFML.

A too simple example

As an appetizer, let's try to prove the specification "with big-O" for the incr function, of the first blog post:

Lemma incr…

Intermediate truth values — Andrej Bauer, Jul 30, 2015

I have not written a blog post in a while, so I decided to write up a short observation about truth values in intuitionistic logic which sometimes seems a bit puzzling.

Let $\Omega$ be the set of truth values (in Coq this would be the setoid whose underlying type is $\mathsf{Prop}$ and equality is equivalence $\leftrightarrow$, while in HoTT it is the h-propostions). Call a truth value $p : \Omega$ intermediate if it is neither true nor false, i.e., $p \neq \bot$ and $p \neq \top$. Such a R…


Formally verifying the complexity of OCaml programs with CFML -- interlude — GaGallium (Armaël Guéneau), Jul 30, 2015

This small interlude post is not about Coq nor CFML: I present a data structure from Okasaki's Purely functional data structures, implemented in OCaml.

It comes as a preliminary explanation for an incoming formalization of it in CFML (see next post), including an complexity analysis!

The structure we decided to study is Okasaki's "binary random access list". It is a functional data structure, which features usual list operations (cons and uncons for adding and removing an …


Welcome to the Ocsigen Blog! — Ocsigen blog (The Ocsigen Team), Jul 29, 2015

The Ocsigen project finally has a blog. We are planning to publish news from the wider Ocsigen community, tutorials, and more.

Ocsigen encompasses the building blocks that you need in order to efficiently develop Web applications in OCaml. Among other libraries and tools, Ocsigen provides:

  • js_of_ocaml, which is a compiler from OCaml to JavaScript;

  • Ocsigen Server, which is a web server implemented in OCaml;

  • Lwt, which is a cooperative thread library for OCaml;


Weekly News — OCaml Weekly News, Jul 28, 2015

  1. Introduction to Functional Programming in OCaml, a MOOC
  2. Comparing floats
  3. Clever typing for client-server communication?
  4. Call for participation: ML 2015
  5. Released: OCaml version 4.02.3
  6. Other OCaml News

View older blog posts.