Browse thread
try and tail call
- Christophe Raffalli
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Christophe Raffalli <raffalli@u...> |
| Subject: | try and tail call |
consider this piece of code:
(try
let b = f a in
(fun () -> g b)
with
(fun () -> h a)) ()
Is the call to "g" a tail call and is it omptimized as such ?
If not, how to encode a feature like this one:
try
...
end
... (* the exception raised here are not handles by with but
propagated *)
with
...
By the way I think this "try ... [end ...] with ..." syntax is usefull
anyway because you have often a bug when
you write
try
let b = f a in (* you know this may raise Not_found *)
g b (* you assume wrongly that this can not raise Not_found *)
with
Not_found -> h a
The unwanted capture of Not_found could be avoided with try ... end ...
with ...
Christophe Raffalli