• 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.

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

Unicode 10.0.0 refresh — Daniel Bünzli, Jun 21, 2017

Uucd, Uucp, Uunf and Uuseg were refreshed for Unicode 10.0.0. Find the details via the software page.

Weekly News — OCaml Weekly News, Jun 20, 2017

  1. Micro benchmarks for floating-point operations in OCaml?
  2. Can this code be accelerated by porting it to SPOC, SAREK or MetaOCaml ?
  3. From the OCaml discourse
  4. Ocaml Github Pull Requests

Weekly News — OCaml Weekly News, Jun 13, 2017

  1. First OCaml hacking session in Belgium -- 1-2 July
  2. deprecating opam 1.2.0
  3. From the OCaml discourse
  4. Ocaml Github Pull Requests
  5. Other OCaml News

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

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 500 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…


Weekly News — OCaml Weekly News, Jun 06, 2017

  1. qcheck 0.6
  2. Odig 0.0.2
  3. deprecating opam 1.2.0
  4. OCaml hacking evening in Cambridge, (MA, *US*) on June 6th
  5. findlib-1.7.3
  6. From the OCaml discourse
  7. Ocaml Github Pull Requests
  8. Other OCaml News

New in libguestfs: Rewriting bits of the daemon in OCaml — Richard Jones, Jun 04, 2017

libguestfs is a C library for creating and editing disk images. In the most common (but not the only) configuration, it uses KVM to sandbox access to disk images. The C library talks to a separate daemon running inside a KVM appliance, as in this Unicode-art diagram taken from the fine manual:

 │ main program      │
 │                   │
 │                   │           child process / appliance
 │                …

Full Time: Front-end Developer at issuu in Copenhagen — GitHub Jobs, Jun 02, 2017

Fulltime, Copenhagen

issuu is the world's fastest-growing digital publishing platform. We are looking for a new member to join our fantastic team. With great people, unique ideas and stunning technology, we're changing the future of publishing today. Can you be the best at what you do? Join us!

About this job

As a Front-end Developer at issuu, you will be joining a team of highly skilled web enthusiasts building web applications in an agile environment. We currently develop for deskto…


PureScript/React Front-End Developer at CollegeVine (Full-time) — Functional Jobs (FunctionalJobs.com), Jun 01, 2017


CollegeVine is looking for a product-focused front-end developer to help engineer the future of guidance, mentorship, and higher education attainment.

There aren't many industries left that haven't been significantly disrupted by technology in some way, but you're reading about one right here! Public high school guidance departments are under-resourced in our country and we think near-peer mentorship is the solution. As it stands, the current admissions process is a hug…


Weekly News — OCaml Weekly News, May 30, 2017

  1. BuckleScript 1.7.4
  2. New version (1.3) of interval programming library
  3. utop 2.0.0
  4. From the OCaml discourse
  5. Ocaml Github Pull Requests

Frama-C 15 - Phosphorus is out. Download ithere. — Frama-C, May 30, 2017

A modular formalization of type theory in Coq — Andrej Bauer, May 29, 2017

Here are the slides for the talk I just gave at TYPES 2017 in Budapest. It is joint work with Philipp Haselwarter and Théo Winterhalter. The abstract for the talk is available online.

It describes a complete formalization of dependent type theory which allows you to turn various features of type theory on and off, and it proves several basic formal theorems.

GitHub repository: formal-type-theory
Slides: TYPES 2017  – A modular formalization of type theory in Coq [PDF]

Weekly News — OCaml Weekly News, May 23, 2017

  1. New release of the Albatross compiler available via opam
  2. findlib-1.7.2
  3. v0.9 release of Jane Street packages
  4. From the OCaml discourse
  5. Other OCaml News

More type classes in OCaml — Shayne Fletcher (Evelgren), May 22, 2017

More type classes in OCaml

More type classes

Author: Joel Björnson

About the author: Joel has been enjoying functional programming ever since being introduced to Haskell at Chalmers University (Sweden). Since then he's been dabbling in F# and more recently OCaml. He's currently based in London, working at the intersection of functional programming and finance.

As demonstrated in previous articles on this blog, OCaml comes with a rich module system. Among other things it enables developers to …


Weekly News — OCaml Weekly News, May 16, 2017

  1. Transforming side-effects to a monad
  2. Clarity - functional programming library for OCaml
  3. PPX is harmful to our community in the long term
  4. discuss.ocaml.org now available
  5. Snabela 1.0: Logic-less @templates@
  6. Human-friendly Lwt: documenting and refactoring the Lwt core
  7. OCaml workshop 2017: call for presentations
  8. Ocaml Github Pull Requests
  9. Other OCaml News

Proving a mem/map property — Shayne Fletcher, May 11, 2017

Here are two well known "classic" functions over polymorphic lists.

map f l computes a new list from l by applying f to each of its elements.

let rec map (f : 'a -> 'b) : 'a list -> 'b list = function
| [] -> []
| h :: t -> f h :: map f t

mem x l returns true is x is an element of l and returns false if it is not.

let rec mem (a : 'a) : 'a list -> bool  = function
| [] -> false

New opam features: more expressive dependencies — OCamlPro, May 11, 2017

This blog will cover yet another aspect of the improvements opam 2.0 has over opam 1.2. It may be a little more technical than previous issues, as it covers a feature directed specifically at packagers and repository maintainers, and regarding the package definition format.

Specifying dependencies in opam 1.2

Opam 1.2 already has an advanced way of specifying package dependencies, using formulas on packages and versions, with the following syntax:

depends: [
  "foo" {>= "3.0&q…

Weekly News — OCaml Weekly News, May 09, 2017

  1. OCaml / Ocsigen developer positions
  2. tjr_btree 0.1.0 (initial release)
  3. Other OCaml News

Preprocessor extensions for code generation — Shayne Fletcher, May 04, 2017


Preprocessor extensions for code generation

"A Guide to Extension Points in OCaml"[1] provides a great "quick-start" on using the OCaml extension points API to implement preprocessor extensions for abstract syntax tree rewrites. This post picks up where that tutorial leaves off by showing how to write a ppx that does code generation.

The problem treated here is one posed in Whitequark's blog : "Implement a syntax extension that would accept type declarations of …


New opam features: “opam install DIR” — OCamlPro, May 04, 2017

After the opam build feature was announced followed a lot of discussions, mainly having to do with its interface, and misleading name. The base features it offered, though, were still widely asked for:

  • a way to work directly with the project in the current directory, assuming it contains definitions for one or more packages
  • a way to copy the installed files of a package below a specified destdir
  • an easier way to get started hacking on a project, even without an initialised opam

Status of opam …


Weekly News — OCaml Weekly News, May 02, 2017

  1. PPX is harmful to our community in the long term
  2. aws-s3 0.9.0
  3. Other OCaml News

Looking for a technical writer — Jane Street (Yaron Minsky), May 01, 2017

Jane Street is looking to hire a technical writer. If you're interested, or know someone who you think would be a good match, here's the application link.

We've always believed that developers should spend time and effort documenting their own code, but at the same time, a great writer with a feel for the technology can raise the level of quality in a way that few developers can. And as we've grown, having someone dedicated to writing makes a ton of sense.

Here are the kinds of things we'd like …


What do you mean ExceptT doesn't Compose? — Erik de Castro Lopo, Apr 30, 2017

Disclaimer: I work at Ambiata (our Github presence) probably the biggest Haskell shop in the southern hemisphere. Although I mention some of Ambiata's coding practices, in this blog post I am speaking for myself and not for Ambiata. However, the way I'm using ExceptT and handling exceptions in this post is something I learned from my colleagues at Ambiata.

At work, I've been spending some time tracking down exceptions in some of our Haskell code that have been bubbling up to the top level…


New opam features: local switches — OCamlPro, Apr 27, 2017

Among the areas we wanted to improve on for opam 2.0 was the handling of switches. In opam 1.2, they are simply accessed by a name (the OCaml version by default), and are always stored into ~/.opam/<name>. This is fine, but can get a bit cumbersome when many switches are in presence, as there is no way to sort them or associate them with a given project.

A reminder about switches

For those unfamiliar with it, switches, in opam, are independent prefixes with their own compiler and set of i…


Crowbar Your Favorite Library for Fun and Bugfixes — Mindy Preston, Apr 26, 2017

Crowbar is a tool that combines afl-persistent’s instrumentation with quickcheck-like property-based testing. afl-fuzz is a great tool for detecting crashes, but Crowbar helps us go a step farther and automatically discover inputs which cause our program to no longer have the properties we expect it to have. For reasons that don’t need exploring at this juncture, I first thought to apply Crowbar to charrua-client, a library which implements the DHCP state machine from a client perspe…Read more...

Caveat Configurator: how to replace configs with code, and why you might not want to — Jane Street (Yaron Minsky), Apr 25, 2017

We have a new tech talk coming up on May 17th, from our very own Dominick LoBraico. This one is about how to represent configurations with programs. In some sense, this is an obvious idea. Lots of programmers have experienced the dysphoria that comes from watching your elegant little configuration format metamorphize into a badly constructed programming language with miserable tools. This happens because, as you try to make your configs clearer and more concise, you often end up walking down the…


Weekly News — OCaml Weekly News, Apr 25, 2017

  1. error messages in multiple languages ?
  2. support for OCaml on unusual platforms (ia64-hpux, etc.)
  3. OCaml jobs at genomics company in New York City
  4. Ocaml 4.04.1 released
  5. release of batteries-2.6.0
  6. New release of Menhir (20170418)
  7. Lwt 3.0.0 – monadic promises and concurrent I/O
  8. PPX is harmful to our community in the long term
  9. BuckleScript 1.7
  10. CUFP 2017 Call for Tutorials
  11. Ocaml Github Pull Requests
  12. Other OCaml News

Announcing the upcoming Frama-C & SPARK Day 2017. — Frama-C, Apr 20, 2017

Seventeenth OCaml compiler hacking evening at Pembroke — OCaml Labs compiler hacking, Apr 18, 2017

Our next OCaml Compiler Hacking event will be on Tuesday 16th May in The Old Library at Pembroke College, Cambridge.

If you're planning to come along, it'd be helpful if you could indicate interest via Doodle and sign up to the mailing list to receive updates.

Where: The Old Library, Pembroke College​, ​Cambridge​ ​CB2 1RF

​The Old Library is the first building on the left straight after the Porters Lodge.

When: 6:30pm, Tuesday 16​th ​May

Who: anyone interested in impr…


News about Tyre | Drup's thingies — Gabriel Radanne, Apr 17, 2017

Here are some news about Tyre, along with release of version 0.3.

EzSudoku — OCamlPro, Apr 11, 2017

As you may have noticed, on the begining of April I have some urge to write something technical about some deeply specific point of OCaml. This time I’d like to tackle that through sudoku.

It appearch that Sudoku is of great importance considering the number of posts explaining how to write a solver. Following that trend I will explain how to write one in OCaml. But with a twist.

We will try to optimize it. I won’t show you anything as obvious as how to micro-optimize your code or so…


View older blog posts.