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
[Caml-list] Strange syntax behavior
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2004-06-01 (17:14)
From: John Goerzen <jgoerzen@c...>
Subject: [Caml-list] Strange syntax behavior

I have found some mysterious bugs in a couple of my programs.  Here is a
test case to illustrate what is going on:

# let p = print_endline;;      
# if true then p "yes" else p "no"; p "done";;
- : unit = ()
# try p "test" with Not_found -> p "exc"; p "done";;
- : unit = ()
# try raise Not_found with Not_found -> p "exc"; p "done";;
- : unit = ()
# try p "test" with Not_found -> begin p "exc"; end; p "done";;
- : unit = ()

In the case of if...then...else, the else clause appears to consume only
the first statement following.  With try..with, the with clause appears
to consume everything it possibly can, despite even attempts to stop
that with a begin..end clause.

Is this a bug or a feature?  If a feature, why is this so?  the
try..with behavior seems highly misleading.

-- John

To unsubscribe, mail Archives:
Bug reports: FAQ:
Beginner's list: