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

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

Weekly News — Caml Weekly News, Mar 03, 2015

  1. CommonML: An opinionated build/package/develop workflow on top of CommonJS
  2. Match error with abstract types in modules
  3. ocamlnet-4.0.2
  4. CFP: ML Workshop 2015
  5. How to build a library with c++ stubs
  6. Other OCaml News

Weekly News — Caml Weekly News, Feb 24, 2015

  1. InvarGenT v2.0: Great coverage
  2. OCaml port to IOS for IPhone and IPad released on Cydia alternate app store
  3. 2-year engineer position OCaml/Ocsigen in Paris (Univ Paris Diderot, Inria)
  4. Senior Embedded Linux Engineer position w/OCaml, Montréal
  5. Other OCaml News

Senior Software Engineer at McGraw-Hill Education (Full-time) — Functional Jobs, Feb 24, 2015

This Senior Software Engineer position is with the new LearnSmart team at McGraw-Hill Education's new and growing Research & Development center in Boston's Innovation District.

We make software that helps college students study smarter, earn better grades, and retain more knowledge.

The LearnSmart adaptive engine powers the products in our LearnSmart Advantage suite — LearnSmart, SmartBook, LearnSmart Achieve, LearnSmart Prep, and LearnSmart Labs. These products provide a personalized learni…


Pearl No.2 - The Max Number of Surpassers — Xinuo Chen, Feb 21, 2015


In a list of unsorted numbers (not necessarily distinct), such as


The surpassers of an element are all elements whose indices are bigger and values are larger. For example, the element 1's surpassers are 9, 5, 5, and 6, so its number of surpassers is 4.


And also we can see that 9 doesn't have any surpassers so its number of surpassers is 0.

So the problem of this pearl is:

Given an unsorted list of numbers, find the max number of surpassers, O(nlogn) is required.


Improving the OCaml documentation toolchain — OCaml Platform (OCaml Platform Team), Feb 20, 2015

Last week, we published an alpha version of a new OCaml documentation generator, codoc 0.2.0. In the 2014 OCaml workshop presentation (abstract, slides, video), we mentioned the 'module wall' for documentation and this attempts to fix it. To try it out, simply follow the directions in the README on that repository, or browse some samples of the current, default output of the tool. Please do bear in mind codoc and its constituent libraries are still under heavy development and are not fe…


Why we use OPAM for XenServer development — OCaml Platform (Dave Scott), Feb 18, 2015

This is a guest post from an OPAM user about how they use it. If you would like to post about your own use, please let us know.

XenServer uses the Xen project's "Xapi toolstack": a suite of tools written mostly in OCaml which

  • manages clusters of Xen hosts with shared storage and networking
  • allows running VMs to be migrated between hosts (with or without storage) with minimal downtime
  • automatically restarts VMs after host failure (High Availability)
  • allows cross-site Disaster Recovery
  • si…

ICFP 2015 - a call for sponsorship and how you can help — Anil Madhavapeddy, Feb 18, 2015

The call for papers for this year’s International Conference on Functional Programming is about to close in two weeks, and over a hundred cutting edge research papers will be submitted on the theory, application and experiences behind functional programming and type theory. In addition to the main conference, there are also over 10 big affiliated workshops that run throughout the week on topics ranging from specific languages (Erlang, Haskell, OCaml), the broader commercial community, and ev…


Weekly News — Caml Weekly News, Feb 17, 2015

  1. Ocveralls 0.1 release
  2. First public release of the OCaml Memory Profiler
  3. Core Suite 112.17.00
  4. Other OCaml News

Engineering Manager (OCaml or Haskell under Linux) at FireEye (Full-time) — Functional Jobs, Feb 16, 2015

Position Title: Engineering Manager

Location: Dresden, Germany

The Company

FireEye has invented a purpose-built, virtual machine-based security platform that provides real-time threat protection to enterprises and governments worldwide against the next generation of cyber attacks. These highly sophisticated cyber attacks easily circumvent traditional signature-based defenses, such as next-generation firewalls, IPS, anti-virus, and gateways. The FireEye Threat Prevention Platform provides re…


Fold left via fold right — Shayne Fletcher, Feb 15, 2015

The puzzle is to express fold_left entirely in terms of fold_right. For example, an attempted solution like

let fold_left f e s =
List.rev (fold_right (fun a acc -> f acc a) e (List.rev s))
is inadmissible because it relies on List.rev and thus is not entirely in terms of fold_right.

Recall that given a function $f$, a seed $e$ and a list $[a_{1}; a_{2}; \cdots; a_{N}]$, fold_left computes $f\;(\cdots f\;(f\;e\;a_{1})\;a_{2}\;\cdots)\;a_{N}$ whereas fold_right computes $f\;a_{1}\;(f\;a_{2}\;(\cd…


CUFP 2015 Call for Presentations — CUFP, Feb 13, 2015

CUFP 2015 will be held in Vancouver, Canada. It is co-located with ICFP 2015.

The call for presentations is available here. Submissions are due by June 14.

This year's program committee is:

  • Edward Kmett (McGraw Hill Financial), co-chair
  • Katie Miller, co-chair
  • Michael Fogus (Cognitect)
  • Rein Henrichs (PivotMail)
  • Jessica Kerr (Outpace Systems)
  • Tony Morris (NICTA)
  • Max Swadling

This year's tutorials are organized by:

  • Thomas Arts (Quviq AB)
  • Roman Gonzalez (Unbounce)

We look forward to hearing from you.

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

Software Developer (Functional Programming)

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 380 people in offices in New York, London and Hong Kong.

The markets in which we trade change rapidly, but our intellectual appro…


Senior Development Engineer at Lookingglass Cyber Solutions (Full-time) — Functional Jobs, Feb 10, 2015

Lookingglass is seeking a qualified Senior Development Engineer to join our team!

Are you an experienced senior software engineer in security, networking, cloud and big data? Are you interested in cyber security or improving the security of the Internet? Do you push yourself to be creative and innovative and expect the same of others?

At Lookingglass, we are driven and passionate about what we do. We believe that teams deliver great products not individuals. We inspire each other and our custo…


Smash the Bitcoin Pinata for fun and profit! — Open Mirage (Amir Chaudhry), Feb 10, 2015

Last summer we announced the beta release of a clean-slate implementation of TLS in pure OCaml, alongside a series of blog posts that described the libraries and the thinking behind them. It took two hackers six months — starting on the beach — to get the stack to that point and their demo server is still going strong. Since then, the team has continued working and recently presented at the 31st Chaos Communication Congress.

The authors are putting their stack to the test again and…


The Bitcoin Piñata! — Amir Chaudhry, Feb 10, 2015

Last summer we announced the beta release of a clean-slate implementation of TLS in pure OCaml, alongside a series of blog posts that described the libraries and the thinking behind them. It took two hackers six months — starting on the beach — to get the stack to that point and their demo server is still going strong. Since then, the team has continued working and recently presented at the 31st Chaos Communication Congress.

The latest example goes quite a bit further than a server that …


Weekly News — Caml Weekly News, Feb 10, 2015

  1. Celestial Intellect Looking to Expand their Team
  2. Detecting dead code, discovering a project's structure...
  3. GSoC preparedness
  4. Frama-C related postdoc positions at CEA LIST
  5. Other OCaml News

Recursive lists in C++ — Shayne Fletcher, Feb 07, 2015

Earlier this week, I had a need for a recursive list, that is, a list defined in terms of itself. I think, "back in the day" implementing a data structure of that sort would have been a snap for the everyday C programmer. Today, in this modern C++ world I found myself struggling a little and came to think that maybe the old ways are fading :)

For motivation, here's a couple of examples of the sort of thing I'm talking about.

(1) The list [0; 1; 0; 1; 0; 1; ...] is a list with a cycle in it. In O…


Unikernel demo at FOSDEM — Amir Chaudhry, Feb 06, 2015

Last weekend was spent at one of the world’s biggest open source conferences, FOSDEM. You can check out last year’s review to get an idea of the scale of the event. Since there’s no registration process, it’s difficult to estimate how many people attend but given how many rooms there are, and how full they are, it’s easily several thousand. I was impressed last year at how smoothly things went and the same was true this year.

The main reason to attend this time was to run a demo of …


I wrote a book about OCaml (in Portuguese) — Andrei Formiga, Feb 05, 2015

A few years back I taught a course on Paradigms of Programming Languages that spent most of its time in two particular paradigms: functional programming and logic programming. For the functional programming section I decided to use OCaml because I thought it would be less of a culture shock to the students than using Haskell (also because I really like OCaml).

The course went well, and after that I began thinking about writing a more organized set of notes or even a book about the language in P…


Ninth OCaml compiler hacking evening (back in the lab, with a talk from Oleg) — OCaml Labs compiler hacking, Feb 05, 2015

We'll be meeting in the Computer Lab next Tuesday (10th February 2015) for another evening of compiler hacking. All welcome! Please add yourself to the Doodle poll if you're planning to come along, and sign up to the mailing list to receive updates.

Talk: Generating code with polymorphic let (Oleg Kiselyov)

This time we'll be starting with a talk from Oleg Kiselyov:

Generating code with polymorphic let

One of the simplest ways of implementing staging is source-to-source translation from t…


Release of Bookaml 2.0 — OCamlCore Forge News (Dario Teixeira), Feb 03, 2015

This release brings Bookaml up-to-date with the latest version of the Amazon Product Advertising API.

Weekly News — Caml Weekly News, Feb 03, 2015

  1. Win-builds 1.5.0 - fully-bootstrapped free software distribution for Windows
  2. record update-apply
  3. Merlin 2.1 released
  4. Simple compression library
  5. Other OCaml News

Pearl No.1 - The Min Missing Natural Number — Xinuo Chen, Feb 02, 2015


Prof. Richard Simpson Bird is a Supernumerary Fellow of Computation at Lincoln College, Oxford, England, and former director of the Oxford University Computing Laboratory. His research interests include:

  • The algebra of programming
  • The calculation of algorithms from their specification
  • Functional programming
  • Algorithm design

In 2010, he wrote the book Pearls of Functional Algorithm Design


This book presents 30 algorithm problems and their functional solutions. The reason that they are …


Making making better — Jane Street (Yaron Minsky), Jan 31, 2015

We spend a lot of time and effort on training new people, and it never stops for long. Right now our winter-intern class is ending; in five months we'll have a slew of new interns to get up to speed, and a few months after that we'll have an incoming class of new hires.

A big part of our new-hire training is OCaml Bootcamp, a month-long immersion program for non-dev hires (mostly trading, but some from other areas like research, systems, and accounting). We don't think everyone at Jane Street sh…


Private Release of Alt-Ergo 1.00 — OCamlPro (Mohamed Iguernelala), Jan 29, 2015

After the public release of Alt-Ergo 0.99.1 last December, it's time to announce a new major private version (1.00) of our SMT solver. As usual:

Quick Evaluation

A quick comparison between this new version and the previous releases is given below. Timeout is set to 60 seconds. The benchmark is made of 19044 formulas: (a) some of t…


Weekly News — Caml Weekly News, Jan 27, 2015

  1. Detecting dead code, discovering a project's structure...
  2. new art made with ocaml
  3. Uutf 0.9.4
  4. otr 0.1.0
  5. Core Suite 112.06.02
  6. Other OCaml News

Fast vectorizable math functions approximations — GaGallium (Jacques-Henri Jourdan), Jan 26, 2015

How and why I designed my own approximated implementations of log, exp, sin and cos. The approximation error is quite small, and the functions are fast and vectorizable. For example, my logapprox function is 7.5x faster in tight loops than the icsi_log function, while being more precise.

Recently, I helped my wife optimizing some code doing simulations for her bio-statistics research project. Without going into details, her problem requires doing Bayesian inference using MCMC methods. T…


Recursive Memoize & Untying the Recursive Knot — Xinuo Chen, Jan 25, 2015

When I wrote the section of When we need later substitution in Mutable, I struggled. I found out that I didn't fully understand the recursive memoize myself, so what I had to do was just copying the knowledge from Real World OCaml. Luckily, after the post was published, glacialthinker commented in reddit:

(I never thought before that a recursive function can be split like this, honestly. I don't know how to induct such a way and can't explain more. I guess we just learn it as it is a…


Further OCaml GC Disharmony — Psellos, Jan 25, 2015

January 25, 2015

While working on an OCaml app to run in the iPhone Simulator, I discovered another wrapper code construct that looks plausible but is incorrect. I was able to reproduce the error in a small example under OS X, so I am writing it up for the record.

The error is in code that calls from Objective C into OCaml. In an OCaml iOS app these calls happen all the time, since events originate in iOS. You can imagine events being formed originally from an Objective C-like substance, then …


Installing OCaml for MacOS Noobie! — Yan Shvartzshnaider, Jan 23, 2015

After successfully installing OCaml and Ocaide plugin for Eclipse on a  Mac, I now think it's straightforward, however, before I completely forget the pain involved in figuring out what goes where. I wanted to put down some pointers for noobies like me, in hope that it will save people some valuable time.

In general, ocaml.org is a great spot for finding any information related to OCaml. Installing OCaml is no different, you can read all about it here. There is tons of very useful and detailed i…

View older blog posts.