Sliding-window max (and other associative operators), 2019-12-12

Consider a sequence of $n$ numbers and imagine you need to compute the maximum of all adjacent sub-sequences of length $k$. How would you do that efficiently?

Unboxed floats in OCaml, 2016-04-14

This post describes how unboxing for float values works in OCaml, focusing on recent evolutions. Most of the content here applies to boxed integer types as well (int32, int64 and nativeint).

Generating Javascript bindings from OCaml interfaces, 2015-04-27

LexiFi is currently experimenting with the js_of_ocaml compiler in order to create some browser-side applications in OCaml.

This post is about the special representation that OCaml uses for arrays of floating point values. My claim is that this special representation is useful, but also harmful in some contexts. There are better alternatives that achieve the same benefits without the drawbacks.

ppx and extension points, 2014-07-23

The release of OCaml 4.02 is approaching and amongst many other new stuff, it will include the work on -ppx and extension points, supporting light-weight syntactic tools (without Camlp4).

Inlined records in constructors, 2014-04-10

I'd like to introduce a new language feature, inlined record arguments on constructors, which I propose for inclusion in OCaml. In a nutshell, it allows you to define a record directly within a sum type constructor:

Mixin objects, 2013-06-14

The “O” part of OCaml is not very popular amongst OCaml developers and many of them explain (with some pride) that they avoid any contact with the OO sublanguage altogether.

OCaml extensions at LexiFi, semi-implicit laziness, 2013-06-14

Being lazy is sometimes good, especially if you don't have to work too hard to be lazy.

Static exceptions, 2013-01-11

In this post, I propose Static Exceptions as a new language feature allowing programmers to express interesting control flows in a compact way.

A note about the performance of Printf and Format, 2012-11-28

The goal is to display the following to stdout:

(0,0) (1,1) (2,2) … (1000000,1000000).

Type-based selection of label and constructors, 2012-11-27

Most languages provide some way to manipulate tuples of values with a proper label for each field. They are called structures in C, records in OCaml; objects as found in most mainstream OO languages extend this same notion.

Syntax extensions without Camlp4, let's do it!, 2012-06-29

In a previous post, I've described a proposal on how to get rid of Camlp4 to write simple syntax extensions. This proposal slowly becomes a reality:

Runtime Types, 2011-12-08

It is often useful to get access to types at runtime, in order to implement generic type-driven operations. A typical example is a generic value pretty-printer.

Syntax extensions without Camlp4, 2011-04-20

In this post, I'd like to propose a new approach to extending the syntax of OCaml that does not depend on Camlp4.

What does this function do?, 2011-04-08

A little teaser for OCaml gurus: what does the function below do?

References with physical equality, 2010-12-28

In OCaml, generic functions like comparison and hashing are quite useful but not very flexible. In this post, I'll explain some tricks that might be useful when you want to tweak the behavior of these generic functions for your own data structures.

Dynamic types, 2010-12-02

Thanks to an ongoing work by Jacques Le Normand, there is some hope to see Generalized Algebraic Datatypes (GADTs) in OCaml soon, so it's time to get familiar with them! In this post, I'll show how to use this new feature to represent OCaml types at runtime and define generic type-driven operations.

Implicit arguments, 2010-12-02

This is a follow-up on yesterday's post about implicit values. With five more lines added to the branch, we know have implicit arguments as well.

Implicit values, 2010-12-01

In this post, I'll not describe an existing extension to OCaml that we use at LexiFi, but rather some ideas for a future possible extension.

OCaml extensions at LexiFi, overidding record labels and constructors, 2010-11-25

OCaml is a very important language at LexiFi. We use it as our primary internal development language. We also expose it to some of our power users: they can write their own applications or extend LexiFi Apropos (our flagship product) with custom addins written in OCaml.

LexiFi • 892 rue Yves Kermen • F-92100 Boulogne-Billancourt • France