Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
Ocaml compiler features
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2007-01-16 (14:14)
From: skaller <skaller@u...>
Subject: Re: [Caml-list] Ocaml compiler features
On Tue, 2007-01-16 at 10:00 +0100, Vincent Hanquez wrote:
> On Tue, Jan 16, 2007 at 12:18:11PM +1100, skaller wrote:
> > I don't miss any of those things .. the point being they're 
> > not so 'common' as you might think.
> It's totally common to to do some action despite that an exception has
> been raised or not to cleanup stuff (like file descriptor is the obvious
> example).

No it isn't. First, I don't use exceptions like that: I usually
wrap them. Second, this technique isn't that useful in a language
with garbage collection: this is not C++. A thirdly, in my own
language Felix there ARE no exceptions .. so it can hardly
be 'common'.

The Felix compiler (an Ocaml program) throws exceptions
in three circumstances:

(a) Errors: no cleanup is required.

(b) Library functions: either it is a program error
or I map the exception to a variant: no cleanup is

(c) Exiting a deep recursion: in no case is any
cleanup required.

So actually in a 60Kloc program, no cleanup is done
anywhere for any reason. It just isn't necessary.

> > I'm a Python programmer too, and I never use 'finally' ..
> > I've never found any use for it.
> You probably don't write/read much python code then.

Actually I'm a Python ex-guru, I have two major pieces
of software written in it, and I've even *implemented*
a Python interpreter .. in Ocaml :)

> ( I found 2 use of finally in felix's python code )

Probably written by Erick not me :)

> > Felix has return statement .. but then Felix has *statements*:
> > executable Ocaml is all expressions, so a return statement would
> > seem out of place.
> OCaml is a functional language, however it also contains imperative feature.
> It doesn't seems so inappropriate to have a return statement, as long
> it's not abused.

If I recall, the revised syntax also has a return statement.

I'm simply trying to show that the only way to really substantiate
a claim something is common is to do a real survey of code.

I have not analysed all the Ocaml code out there but it is
my guess most Ocaml programmers would have no real use for
a return expression.

Many may agree exception handling is not so good, but many
would probably favour another proposal for restructuring
exceptions, rather than adding a finally clause.

I forget the URL of the proposal, which is a kind of 
let/try construction, perhaps someone can fill that in?

John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: