Previous week Up Next week

Hello

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

Archive: https://sympa-roc.inria.fr/wws/arc/caml-list/2011-05/msg00126.html

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.

 See http://www.complang.org/ragel/ChangeLog
      

ocaml, objects, classes, type ascription, virtual methods

Archive: https://sympa-roc.inria.fr/wws/arc/caml-list/2011-05/msg00128.html

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 
by
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

Archive: https://sympa-roc.inria.fr/wws/arc/caml-list/2011-05/msg00136.html

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:
http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

The Haskell implementation:
http://github.com/willdonnelly/xdg-basedir


The API of this implementation:
http://xdg-basedir.forge.ocamlcore.org/api

Get source code:
$ darcs get 
https://forge.ocamlcore.org/anonscm/darcs/xdg-basedir/ocaml-xdg-basedir/

Browse source code:
http://darcs.ocamlcore.org/cgi-bin/darcsweb.cgi?r=xdg-basedir/ocaml-xdg-basedir;a=summary
      

Camomile 0.8.3

Archive: https://sympa-roc.inria.fr/wws/arc/caml-list/2011-05/msg00140.html

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
http://prdownloads.sourceforge.net/camomile/camomile-0.8.3.tar.bz2
You can find the general information about the project from the
project page http://camomile.sourceforge.net/
      

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 http://planet.ocamlcore.org/.

Zarith: arbitrary-precision integers:
  https://forge.ocamlcore.org/projects/zarith/

Unbreaking Scalable Web Development, One Loc at a Time:
  http://dutherenverseauborddelatable.wordpress.com/2011/05/23/unbreaking-scalable-web-development-one-loc-at-a-time/

OCaml Meeting 2011:
  http://www.ocamlcore.com/wp/2011/05/ocaml-meeting-2011/

Dynamically linked OCurl 0.5.3:
  http://alaska-kamtchatka.blogspot.com/2011/05/dynamically-linked-ocurl-053.html

Raw access to C structures from OCaml:
  http://gaiustech.wordpress.com/2011/05/17/accessing-c-memory-structures-from-ocaml/

And Yet They Complain:
  http://alaska-kamtchatka.blogspot.com/2011/05/and-yet-they-complain.html

Dose3 in debian experimental !:
  https://mancoosi.org/~abate/dose3-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