Previous week Up Next week


Here is the latest Caml Weekly News, for the week of May 17 to 24, 2011.

  1. ragel 6.7
  2. ocaml, objects, classes, type ascription, virtual methods
  3. ocaml-xdg-basedir v0.0.1: XDG basedir location for data/cache/configuration files
  4. Camomile 0.8.3
  5. Other Caml News

ragel 6.7


ygrek announced:
 I am glad to announce that fresh release of Ragel (state machine compiler)
 includes ocaml codegen. Ragel is convenient to generate lexers or sometimes 
even  parsers for simple formats.


ocaml, objects, classes, type ascription, virtual methods


Dmitry Grebeniuk asked and Jacques Garrigue replied:
>  I have a base class with virtual methods and an extended classes
> where these methods are implemented.
>  When I'm ascribing type "base" to class "ext", I get an error:
> =============
>        OCaml version 3.13.0+dev3 (2011-03-07)
> # class virtual base = object method virtual m : unit end;;
> class virtual base : object method virtual m : unit end
> # class ext : base = object method m = () end;;
> Characters 6-43:
>  class ext : base = object method m = () end;;
>        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> Error: This class should be virtual. The following methods are undefined : m
> #
> =============
>  Is it the expected behaviour?

It is indeed the expected behaviour.
Like a module signature, a class signature provides complete information.
If you declare a method as virtual in the signature, it will be made virtual 
the ascription (this is allowed, since virtual is a "supertype" of concrete).

In such a case you should rather use a class type:

  class type base = object method m : unit end

As suggested by others, if you don't want to suggest such a class
type you can also use the derived object type:

  class ext = object (_ : #base) method m = () end

These different approaches are described in the manual.

ocaml-xdg-basedir v0.0.1: XDG basedir location for data/cache/configuration files


Sylvain Le Gall announced:
This library implements the xdg-basedir specification. It helps to define
standard locations for configuration, cache and data files in the user
directory and on the system.

It is a straightforward implementation on UNIX platform and try to apply
consistent policies with regard to Windows directories.

It is inspired by the Haskell implementation of this specification, and it
follows the same choices for Windows directories.

The xdg-basedir specification:

The Haskell implementation:

The API of this implementation:

Get source code:
$ darcs get

Browse source code:;a=summary

Camomile 0.8.3


Yoriyuki Yamagata announced:
I'm pleased to announce Camomile 0.8.3, a Unicode library for OCaml.
This is a bug fix release which fixes a bug concerning casefolding (a
function removing case from the string) abd compare_caseless
(comparison of strings ignoring lower and upper cases).

You can download the new version from
You can find the general information about the project from the
project page

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

Zarith: arbitrary-precision integers:

Unbreaking Scalable Web Development, One Loc at a Time:

OCaml Meeting 2011:

Dynamically linked OCurl 0.5.3:

Raw access to C structures from OCaml:

And Yet They Complain:

Dose3 in debian experimental !:

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