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

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

Polynomials over rings — Shayne Fletcher, Mar 21, 2017

Polynomials over rings

This post provides a workout in generic programming using modules & functors.

The program presented here models univariate polynomials over rings based on an exercise in "The Module Language" chapter, of Didier Rémy's book, Using, Understanding and Unraveling the OCaml Lanaguage.

Arithmetics and rings

We begin with a type for modules implementing arithmetic.

module type ARITH = sig
type t

Weekly News — OCaml Weekly News, Mar 21, 2017

  1. New release of visitors
  2. Named pipe on Windows.
  3. Preview: B-tree library
  4. Jane Street development opam repository
  5. Exceptions and Gc.
  6. Ocaml Github Pull Requests
  7. Other OCaml News

Trivial meta-programming with cinaps — Jane Street (Jeremie Dimino), Mar 20, 2017

From now and then, I found myself having to write some mechanical and repetitive code. The usual solution for this is to write a code generator; for instance in the form of a ppx rewriter in the case of OCaml code. This however comes with a cost: code generators are harder to review than plain code and it is a new syntax to learn for other developers. So when the repetitive pattern is local to a specific library or not widely used, it is often not worth the effort. Especially if the code in ques…


New OPAM Features: “opam build” — OCamlPro, Mar 16, 2017

The new opam 2.0 release, currently in beta, introduces several new features. This post gets into some detail on the new opam build command, its purpose, its use, and some implementation aspects.

opam build is run from the source tree of a project, and does not rely on a pre-existing opam installation. As such, it adds a new option besides the existing workflows based on managing shared OCaml installations in the form of switches.

What does it do ?

Typically, this is used in a fresh git clone of…


new opam features: "opam build" — OCaml Platform (Louis Gesbert), Mar 16, 2017

The new opam 2.0 release, currently in beta, introduces several new features. This post gets into some detail on the new opam build command, its purpose, its use, and some implementation aspects.

opam build is run from the source tree of a project, and does not rely on a pre-existing opam installation. As such, it adds a new option besides the existing workflows based on managing shared OCaml installations in the form of switches.

What does it do ?

Typically, this is used in a fresh gi…


One more talk, two more videos — Jane Street (Yaron Minsky), Mar 15, 2017

I'm happy to announce our next public tech talk, called Seven Implementations of Incremental, on Wednesday, April 5th, presented by yours truly. You can register here.

The talk covers the history of Incremental, a library for building efficient online algorithms. The need to update computations incrementally is pretty common, and we've found Incremental to be useful in creating such computations in a number of different domains, from constructing efficient financial calculations to writing resp…


Full Time: Fullstack System Engineer at issuu in Copenhagen, Denmark — GitHub Jobs, Mar 14, 2017

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 the Job

As a full-stack System engineer, you will join a team of highly skilled developers, designers, and product owners.

  • First and foremost, we enjoy delivering results that create value for the end users,…

Weekly News — OCaml Weekly News, Mar 14, 2017

  1. libbin_prot, php-bin_prot, ppx_bin_prot_interop
  2. Jbuilder 1.0+beta1
  3. ocamlbuild 0.11.0
  4. New release of visitors
  5. Ocaml Github Pull Requests
  6. Other OCaml News

From visitors to iterators — GaGallium (François Pottier), Mar 14, 2017

I have been asked whether an automatically-generated visitor, as produced by the visitors syntax extension for OCaml, can be used to construct an iterator.

It turns out that this can be done in a simple and efficient manner. (Up to a constant factor, the time complexity of this solution is optimal.) As the problem is interesting and its solution is somewhat nonobvious, I am describing them here.

To play with this code in an OCaml toplevel, first install visitors via the command opam instal…


Universal type — Shayne Fletcher, Mar 10, 2017

Universal type

A universal type is a type into which all other types can be embedded. A module implementing such a type here will satisfy the following signature.

module type UNIVERSAL = sig
type t
val embed : unit → (α → t) * (t → α option)
The type t is the universal type and each call to embed returns a pair of functions : an injection function for embedding a value into the universal type and, a projection fu…Read more...

Polymorphic variants : Subtyping and variance — Shayne Fletcher, Mar 07, 2017

Polymorphic variants : subtyping and variance

Polymorphic variants : Subtyping and variance

Here are some expressions in the top-level involving polymorphic variant types.

# let x = [ `On; `Off ];;
val x : [> `Off | `On ] list = [ `On; `Off ]
The notation [> `Off | `On ] represents a type that at least contains the constructors `Off and `On. Of course, there are an unlimited number of such types so [> `Off | `On ] is a set i…Read more...

Weekly News — OCaml Weekly News, Mar 07, 2017

  1. BuckleScript 1.5 - First class support for Reason syntax
  2. Menhir incremental api with ocamlbuild
  3. Cmdliner 1.0.0
  4. researcher permanent position at ONERA, Toulouse
  5. Ocaml Github Pull Requests
  6. Other OCaml News

Full Time: Software Developer (Functional Programming) at Jane Street in New York, NY; London, UK; Hong Kong — GitHub Jobs, Mar 06, 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 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…


Building and Publishing an OCaml Package: Q1 2017 — KC Sivaramakrishnan, Mar 05, 2017

One of the key indicators of maturity of a language ecosystem is the ease of building, managing and publishing software packages in that language. OCaml platform has made steady progress in the last few years to this end. While OPAM simplified package (and compiler) management, the developing and publishing packages remained a constant pain point. This situation has remarkably improved recently with the Topkg and Carcass. This post provides a short overview of my workflow for building and publis…


Functional Game Server (Gameplay) Engineer at Playstudios (Full-time) — Functional Jobs (FunctionalJobs.com), Mar 03, 2017

Game Server Engineer (Gameplay) PLAYSTUDIOS is seeking a Game Server Engineer to join the server development team in Austin. This role focuses on creating and improving server-side game logic.

Millions of people play our games daily. The Austin team builds the reliable, large-scale production systems that deliver that gameplay and the tools to manage them. Usability and stability underpin every decision we make and we’re looking for someone who can help us build solutions to empower our u…


What a Jane Street dev interview is like — Jane Street (Sebastian Funk), Feb 28, 2017

Are you thinking about applying to Jane Street for a developer role? Or already have a phone interview scheduled but unsure what to expect? Read on as we walk through an example phone interview with you.

We want to give you some insight into what a typical Jane Street phone interview looks like and give you a chance to prepare. We're going to take a look at a question we call "Memo" which we used to ask regularly (but of course don't ask anymore so no need to memorize anything on this page!). As…


Weekly News — OCaml Weekly News, Feb 28, 2017

  1. List of structurally typed objects
  2. mirage 3.0.0
  3. Ocaml Github Pull Requests
  4. Other OCaml News

10 — Daniel Bünzli, Feb 27, 2017

Ten years ago I published a first bit of free software. Over the years, this has now expanded to 28 OCaml packages, without counting random informally published elucubrations. Thanks to OCaml Labs' support, there will be more.

Software Engineer - Functional Programming at NAVIS (Full-time) — Functional Jobs (FunctionalJobs.com), Feb 24, 2017

NAVIS is looking for a passionate software developer with experience in functional programming to join our talented Engineering Team.

Unfortunately, you won't get to save baby seals in this position, but we are big fans of them.

We need someone who's naturally-inclined to build quality software from the start using strong design patterns and TDD. We need someone who works well alone AND collaboratively with an Agile team.

NAVIS is building a suite of SaaS products and an underlyin…


Moving from ocaml.io to ocamllabs.io — OCaml Labs, Feb 23, 2017

We are pleased to announce that the new and improved OCaml Labs website is here!

This wiki will remain active while we transition our content to ocamllabs.io, but it will be retired eventually. The new site will have all the recent news and exciting developments from OCaml Labs together with links to related projects and people, so it will be easier than ever to keep up to date with everything we are doing.

We hope you enjoy the new site!

Weekly News — OCaml Weekly News, Feb 21, 2017

  1. OCaml 4.05.0+beta1
  2. ocamlyacc missing from the beta
  3. codept 0.9: an alternative dependency analyzer for ocaml projects
  4. Ocaml Github Pull Requests
  5. Other OCaml News

Conex, establish trust in community repositories — Hannes Mehnert (hannes), Feb 16, 2017

Less than two years after the initial proposal, we're happy to present conex 0.9.2. Pleas note that this is still work in progress, to be deployed with opam 2.0 and the opam repository.


Conex is a library to verify and attest release integrity and authenticity of a community repository through the use of cryptographic signatures.

Packages are collected in a community repository to provide an index and allowing cross-references. Authors submit their packages to the repository. which is c…


Who maintains package X? — Hannes Mehnert (hannes), Feb 16, 2017

A very important data point for conex, the new opam signing utility, is who is authorised for a given package. We could have written this manually down, or force each author to create a pull request for their packages, but this would be a long process and not easy: the main opam repository has around 1500 unique packages, and 350 contributors. Fortunately, it is a git repository with 5 years of history, and over 6900 pull requests. Each opam file may also contain a maintainers entry, a list…


Jane Street Tech Talks: Verifying Puppet Configs — Jane Street (Yaron Minsky), Feb 16, 2017

Our first Jane Street Tech Talk went really well! Thanks to everyone who came and made it a fun event.

Now it's time for another. We're planning for the series to feature a combination of voices from inside and outside Jane Street. This one is of the latter variety: on March 6th, Arjun Guha will be presenting On Verification for System Configuration Languages, which is about using static verification techniques for catching bugs in Puppet configs.

I've known Arjun for years, and he's a both a go…


Ezirmin : An easy interface to the Irmin library — KC Sivaramakrishnan, Feb 15, 2017

Ezirmin is an easy interface over the Irmin, a library database for building persistent mergeable data structures based on the principles of Git. In this post, I will primarily discuss the Ezirmin library, but also discuss some of the finer technical details of mergeable data types implemented over Irmin.



ANN: parallpairs — Eray Özkural, Feb 14, 2017

Parallel all-pairs similarity search algorithms in OCaml Sources Git repository ---> https://github.com/examachine/parallpairs The repository contains the 1.0 sources, a release will be made soon. Citation If you use this code, please cite the following paper. It is currently under review

Weekly News — OCaml Weekly News, Feb 14, 2017

  1. 2015 ML & OCaml post-proceedings now available
  2. parallpairs
  3. Opam 2.0.0~beta is out!
  4. Ocsigen Start and Ocsigen Toolkit: Quick Web and mobile app in OCaml
  5. namespace inside object?
  6. first official release of Hoogle for OCaml programmers
  7. release of containers-1.0
  8. BuckleScript 1.4.3 - Link time dead code elimination
  9. Next OUPS meetup, Feb. 21th 2017
  10. Ocaml Github Pull Requests
  11. Other OCaml News

Ocsigen Start and Ocsigen Toolkit reach 1.0! — Ocsigen blog (The Ocsigen Team), Feb 09, 2017

The Ocsigen team is very happy to announce the first release of two major new projects:

  • Ocsigen Start: a Web/mobile application skeleton written with Js_of_ocaml and Eliom. You can use this skeleton as a basis for your own app, or to learn Web/mobile app development in OCaml.

  • Ocsigen Toolkit: a set of responsive widgets for your mobile and Web applications in OCaml.

Both projects are available via OPAM and released under the LGPL.

Before installing, you can try out a dem…


opam 2.0 Beta is out! — OCaml Platform (Louis Gesbert), Feb 09, 2017

UPDATE (2017-02-14): A beta2 is online, which fixes issues and performance of the opam build command. Get the new binaries, or recompile the opam-devel package and replace the previous binary.

We are pleased to announce that the beta release of opam 2.0 is now live! You can try it already, bootstrapping from a working 1.2 opam installation, with:

opam update; opam install opam-devel

With about a thousand patches since the last stable release, we took the time to gather feedback after…


examachine@github — Eray Özkural, Feb 07, 2017

examachine has 22 repositories available. Follow their code on GitHub. Source: examachine (Eray Özkural)   I just uploaded a bunch of free software projects to github. Some of them were on google code, which was terminated by google. You may

View older blog posts.