Previous week   Up   Next week

Here is the latest Caml Weekly News, week 19 to 26 march, 2002. 

1) English O'Reilly OCaml Book Now Online!
2) announcing iox-1.00 (beta 1 and beta 2)
3) New Objective Caml examples
4) caml-macosx mailing list created
5) A new Hump for Lablgtk
6) let or val in objects
7) Osiris problem

1) English O'Reilly OCaml Book Now Online!
Ruchira Datta announced:

It is my great pleasure to announce that the first fruits of the
_Developing Applications with Objective Caml_ translation project are now
online!  Please go to

where the preliminary version of the English translation of this seven
hundred-odd page book is available for your viewing pleasure!

This translation is the product of an unprecedented effort by roughly   
sixty volunteers worldwide.  What is it about Objective Caml that inspires
so much devotion in so many people?  Now is your chance to find out!  If 
you've just been waiting for an English book to introduce you to this
amazing language, this one explains everything you need, including
OCaml's fundamentals, accompanying tools, and support for software
architecture and concurrency & distribution.  Replete with extensive
examples, it will be of interest even to experienced OCaml aficionados.

As mentioned above, this is a preliminary version.  Some solutions to
exercises have not been translated and some proofreading needs to be
done.  So please excuse any glitches you find, and promptly bring
them to our attention by emailing the translators' list:

Please feel free to tell us as well if our prose is unclear or awkward.  We
are eager to hear your comments, questions, and criticisms, so we can help
give OCaml the book it deserves.

Note that the book is based on OCaml 2.04, the version current when
the original French was being written, although an appendix explains
the new features of OCaml 3.04 relative to that version.  Since
OCaml 3.04 is fully backward-compatible with OCaml 2.04, all the
example code should work with this version (or indeed any version
from OCaml 3.00 on).  But if you experience any problems in this
regard, please bring them to our attention.

We must thank the authors--Emmanuel Chailloux, Pascal Manoury, and
Bruno Pagano--as well as O'Reilly, for the monumental task of
producing this book in the first place, as well as their generosity
in approving this translation project and allowing it to go online.

We must especially thank Xavier Leroy for his tireless efforts.  Besides
translating two chapters, he has been the sysadmin of the project and has
also undertaken some of the most tedious tasks of the translation.  I
personally don't understand how he does it---I would have thought just
leading the Ocaml team would have been more than enough work for anybody.
We all owe him an enormous debt of gratitude.

Please join me in a virtual round of applause, thanking all the
volunteers for all their hard work to bring this translation to
the light of day!  Well-done!

Ruchira Datta

On behalf of the volunteer translators and proofreaders:

2) announcing iox-1.00 (beta 1 and beta 2)
James Woodyatt announced:

Okay, so I wasn't completely forthcoming.  While I do make the rent as a
practitioner, it is true that I indulge in a little amateur software
research from time to time.

This message announces the availability in source code of my "Iox"
library, which is a framework for concurrent, single-threaded Internet
application services.  It's released under the 2-clause BSD-style
"as-is" license, but I might consider waiving even those terms for
peanuts, so you shouldn't have any worries.

It's the first result of my encounter with Objective Caml, and I'm
probably more pleased with it than I should be.  You can download the
distribution directly from either of these locators:

Alternatively, you may browse the source directly:

There is documentation generated with the [excellent] ocamldoc tool: 

Sometime in May this year, I will post a version of this library with
appropriate patches applied to fix bugs (assuming some are found, which
is probably safe to assume).  Some time later, I plan to release another
version which has improvements in the feature set.

Please direct constructive comments or helpful tips to me.  If you find
a bug, please help me out by also finding a patch that fixes it.

and soon added:

I hate when this happens.

It turns out that the code I posted doesn't build (let alone install)
the native version of the code properly.  I've posted an update that
seems to fix it.  The only source files that changed are the Makefile
and the META file.  I've added a ChangeLog file.

The new distributions are here:

I've also moved the locators for browsing the source and the autodocs:

And, by the way, if you're building this on Mac OS X (or a BSD variant
with a similar issue), the native version won't link until you use
ranlib on the .a file in $PREFIX/ocaml/site-lib/iox/iox.a after you
install it.

I think this might be because ocamlfind install doesn't know to run
ranlib on the .a file after it moves its absolute path.

3) New Objective Caml examples
Pierre Weis announced:

Dear all,

It's my pleasure to announce the availability of a revised and augmented set of
examples for Objective Caml and Caml Light. Have a look to

Feel free to suggest other examples and/or to write answers to
unresolved questions, such as:

``write a Caml program that computes the number of solutions to the
n-queens problem for a chess of size greater than 15''

Have fun :)

4) caml-macosx mailing list created
Guillaume Haberer and Laurent Chéno first asked:

--- A caml-macosx mailing list? ---- 
Caml (caml-light or OCaml) users on MacOS X feel a little forgotten
on the official caml mailing lists. They face many problems in
installing compilers, librairies (e.g. Active DVI). Most of the
times, these users aren't used to Unix at all, and they feel lost in
front of the incomprehensible messages appearing on their terminal.

In order to let the users of all Caml languages on MacOS X help one
another, we plan to create a specific mailing list, that could be
named caml-macosx, and where both English and French languages should
be used.

Let us know what you think of this idea, and wether you'd be ready to
subscribe and participate.

then they added:

It's my pleasure to announce the creation of the mailing list named

Subscription address :

Unsubscription address :

Send mail to :

5) A new Hump for Lablgtk
Maxence Guesdon announced:


i created a new hump for LablGtk/LablGL tools. Its aim is to
list libs and tools using LablGtk or LablGL, sorted by
widget/topic, so one can easily find example to use these
Here is the location:

There are not a lot of tools for now, so do not hesitate
sending me new pointers.

6) let or val in objects
Richard Nyberg asked and John Prevost answered:

>Hello, I'm a bit confused regarding let bindings and nonmutable vals in
>objects. Are there any difference between the classes a and b? or are they
>Like this:
>class a fd =
>  let is = in_channel_of_descr fd in object ... end
>class b fd =
>  object val is = in_channel_of_descr fd ... end;;

In the second case, "is" is a named value that's part of the object--inheriting
classes can access its value, and if it is mutable, change the value.

In the first case, "is" is a variable in the closure of the methods in
the object.  Inheriting classes may not access its value in any way, including
(of course) modifying it if it has a mutable component.

Using lets outside of the object defintion can be very useful when you wish
to have private values which inheriting classes may not access.  (For example,
in order to preserve some invariant.)  However, you may note that a
let-bound variable (if it is a function) may not itself access the contents
of the object.

So they are fairly significantly different.  :)  The normal use is to
let-bind something like an input_stream, which your methods can access but
inheriting methods cannot.  Then inheriting objects have no choice but to
use your accessor functions to access the stream.

7) Osiris problem
Carlos Eduardo Lenz asked and Nicolas Cannasse annouced:

> I have 2 questions about Osiris:
> 1. How can I create 2 or more windows?
>    I get Win32.core_error(I think).
> 2. How can I kill(release memory) 1 window (not setting visible to false)?

The newest version of Osiris which includes lots of new stuff (icons,
treeview, richedit, etc...) is now available here :
Lots of bugs found in the previous release have been corrected , but that's
still a "dev" version , where big pieces can still be changed before the
upcoming Release. If you have any suggestion on design or any particular  
needs, please let me know. I'm also looking for people to help me writing
nice Osiris tutorials.


Alan Schmitt