>> match try Some (f x) with e -> None with >> | None -> .. >> | Some v -> ... >> >> Because I need tail recursive functions. >> > > For tail call and exception, the best is to keep exception and use "let try" contruct (a camlp4 extension is available, but the coding is quite simple): let try x = expr in normal_case with e -> exc_case is translated to (try let x = expr in fun () -> normal_case with e -> fun () -> exc_case) () This way you get tail call in norma_case and exc_case. Hope this helps, Christophe -- Christophe Raffalli Universite de Savoie Batiment Le Chablais, bureau 21 73376 Le Bourget-du-Lac Cedex tel: (33) 4 79 75 81 03 fax: (33) 4 79 75 87 42 mail: Christophe.Raffalli@univ-savoie.fr www: http://www.lama.univ-savoie.fr/~RAFFALLI --------------------------------------------- IMPORTANT: this mail is signed using PGP/MIME At least Enigmail/Mozilla, mutt or evolution can check this signature. The public key is stored on www.keyserver.net ---------------------------------------------