Previous week Up Next week


Here is the latest Caml Weekly News, for the week of April 02 to 09, 2013.

  1. OUD2013 part of CUFP?
  2. new user - old questions
  3. Job offer: compilation of synchronous languages for multicore safety-critical systems
  4. Vector Fabrics is hiring!
  5. First release of P3: a combinator parser library, and parser generator
  6. Other Caml News

OUD2013 part of CUFP?


Deep in this thread, Anil Madhavapeddy said among other things:
Let me sample some of the videos from the CUFP website (at

* Scala at Twitter
* Facebook Chat in Erlang
* Freebase and Metaweb in OCaml (now part of Google)
* Scheme for games development in Uncharted 3
* F# at Microsoft for biological computing
* Big data at Nokia using Erlang/OCaml:

And I haven't even mentioned our usual friends from Citrix or Jane Street:

And many more, of varying size and impact: there's been an interesting
evolution from the 'bedroom FP user' to large companies that use it without
blinking an eye. All of this has been tracked by CUFP over the years,
although we unfortunately don't have videos from the earliest ones.

new user - old questions


Lukasz Stafiniak replied to this very old thread:
> Some years ago I was looking for adequate language for one open-source
> project to be done in free time and although I took a look at OCaml,
> somehow, I didn't like syntax and went playing with Haskell.
> Never really grokked monads and had feeling that despite nice syntax,
> some things are more complicated for pragmatic programming than they
> should be.

[shameless plug] If you'd like to revisit monads and learn other cool
stuff, have a look at "Functional programming in OCaml"

Job offer: compilation of synchronous languages for multicore safety-critical systems


Albert Cohen announced:
The PARKAS team at INRIA and École Normale Supérieure in Paris is
looking for an engineer or a postdoctoral researcher.

This is a 2 to 3 years position, offered in the context of the FSF
project of the IRT SystemX laboratory, to work on a functional,
synchronous language for the design and implementation of multicore
embedded controllers. The position starts on May 15th and is based
primarily in Saclay (NanoInnov building, CEA), with the likely option to
relocate at the INRIA offices in Paris if preferable.

The unique configuration of the SystemX laboratory enables the effective
collaboration of academic and industry researchers and engineers. Direct
collaboration and transfer with Alstom Transport and Esterel
Technologies is expected in this context. The work will include the
development of a compiler for a variant of the Lustre language, building
on existing components in OCaml, as well as runtime system components
for safety-critical and real-time execution environments.

Please contact me as soon as possible if you are interested. More
information will be provided upon request.

Feel free to forward this offer to people you know who might be interested.

Vector Fabrics is hiring!


Stefan Holdermans announced:
Vector Fabrics is hiring: we are looking for a top-notch programmer to
extend our program-analysis and parallelization products. You design
and implement algorithms to assist the programmer to create a parallel
design from a sequential C or C++ program. You work with our
international team of world-class computer scientists and experts in
the Haskell / OCaml functional programming languages.

Your work is at the forefront of technology, giving you the
opportunity to publish your work in major conferences and directly
cooperate with processor design companies and domain-specific
application vendors.

As we are a startup company, you will quickly have a major impact on
our products and get to know all aspects of product creation. You will
be part of a strongly committed development team and contribute to our
agile development process and automated test suites. Interested? Send
your CV, GitHub account or other proof of what you can do to
jobs AT


* Design and implement software optimization (e.g. parallelization)
algorithms for CPUs and GPUs;

* Thoroughly test your code, create automated test suites;

* Contribute to our agile development planning and process;

* Analyze complex customer applications for optimization opportunities
and translate this to new analysis algorithms.


* Your friends and colleagues describe you as a "rockstar" programmer;
your programming ability is way above average;

* Demonstrable experience in design and implementation of complex
software applications; prior experience in functional programming
languages is preferred;

* You continuously surprise us with your creative yet pragmatic
solutions for complex software problems;

* You are strongly committed to deliver working software as early as

* You work against very high quality standards. Refactoring is your
bread and butter, pair-programming is how you prefer to review your

* Whatever technologies, languages, or development environments
you've been using, we expect you have mastered them in depth, and we
expect that you will be able to master any technology, language, or
development environment that we need in the future;

* You are not afraid to get your hands dirty on low-level code, hijack
a malloc() call in the standard C library, port the latest gdb
debugger to Android on a jail-broken tablet? You get it done.

* Excellent command of written and spoken English.


MSc, MEng or PhD in Computer Science or significant relevant


Vector Fabrics is a high-tech software company, developing tools for
embedded multicore programming. Its technology and expertise is
getting widespread recognition in the industry as being innovative and
unique in their ability to address heterogeneous multicore
application-specific silicon platforms. Due to the advanced nature of
its tools, Vector Fabrics operates at the forefront of the next
generation of embedded platforms for diverse markets ranging from
supercomputers to automotive to cell phones.

Vector Fabrics puts absolute priority on hiring top class individuals
in key positions. Vector Fabrics’ team profile is exceptional and its
ambition is to hire only individuals that match or surpass that
profile. The company pays top salary and offers a challenging,
engaging and stimulating work environment with a high degree of

First release of P3: a combinator parser library, and parser generator


Tom Ridge announced:
I'm pleased to announce the first release of the P3 combinator parser
library, and parser generator. It is essentially a synthesis of Earley
parsing with combinator parsing.

The url is:

The main features are:

  * handles all context free grammars

  * fast (when memoized)

  * correct (hopefully)

  * simple (depending on your viewpoint)

  * scannerless (probably not a good idea - a separate lexing phase
    can result in much faster overall performance - but makes
    everything much simpler)

  * parsers implemented via combinators can be integrated easily with
    the core language (OCaml in this case), allowing full use of host
    language features eg modules etc
I'm sure there is much scope for improvement, but I thought I would
release it now to get feedback.
Daniel Bünzli asked and Tom Ridge replied:
> Combinator parsers were an obsession of mine a few years ago. I really
> liked the approach but eventually always ended up writing LL(k)
> parsers (xmlm, jsonm) by hand which so far has been the only
> "technology" that allows me to give the best error
> messages/correction, to handle asynchronous IO, and to remain
> reasonably efficient.

It isn't a fully tooled parser by any stretch of the imagination! Sorry.

> Could you maybe comment on these points:

> * What's the error handling strategy ? Is there support for error correction ?

Yes, I need to do something here. At the moment, there is no real
handling of errors, and nothing to support error correction (I'm not
completely sure what error correction is).

> * Is there support for non-blocking parsing (asynchronous IO) ?

No. :( It works on strings, which have to be fully loaded in memory. I
guess the use case I'm thinking of is a researcher who wants to
quickly knock up a parser, without worrying about fiddling around with
the grammar, to parse inputs of moderate size, and who doesn't care
too much about absolute performance.

For large inputs, which must be parsed quickly in absolute terms, I
think you have to start putting some restrictions on the grammar (and
then you are into using other tools).
Daniel Bünzli then said:
> Yes, I need to do something here. At the moment, there is no real
> handling of errors, and nothing to support error correction (I'm not
> completely sure what error correction is).

In hand made parsers you rewind/fast forward your parser state to get it in a
state where it may parse sensible things again (e.g. a "toplevel" construct,
or the next element in a list-like construct), this can be done for example
by closing/ignoring mismatched parentheses etc. Essentially this means
discarding part of the input or introducing tokens not present in the input.

While this may result in wrong error reports, you always end with a complete
(albeit broken from the user's intent) parse tree. The advantage is that in
certain cases you can report more than one syntax error during parsing (since
this tends to result in cascading errors you usually set an upper error
reporting bound).

With the combinator approach, see for example [1,2] (I don't know if there
were further developments in that area, these were the papers I was reading
at the time).



Swierstra, S.D. (2001).
Combinator Parsers: From Toys to Tools.
In G. Hutton (Ed.),
Electronic Notes in Theoretical Computer Science. Elsevier Science

Hughes, R.J.M. & Swierstra, S.D. (2003).
Polish Parsers, Step by Step.
Eighth ACM Sigplan International Conference on Functional Programming
(pp. 239-248). New York: ACM Press.         

Other Caml News

From the ocamlcore planet blog:
Thanks to Alp Mestan, we now include in the Caml Weekly News the links to the
recent posts from the ocamlcore planet blog at

OCaml on a Nexus 7:

Sekred a password helper for puppet.:

Hackerschool tutorial at Jane Street:

ocaml-extunix 0.0.6 released:

Old cwn

If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a look at the archive or the RSS feed of the archives.

If you also wish to receive it every week by mail, you may subscribe online.

Alan Schmitt