Le sextidi 6 nivôse, an CCXIII, briand@aracnet.com a écrit : > try > (input_line chan), false > with > | End_of_file -> "", true I would have written that try Some (input_line chan) with | End_of_file -> None but the idea is the same. I find it is an irritating limitation of OCaml syntax to have to pack and then unpack all local values in order to uncatch exceptions. Something like try let line = input_line chan in untry loop (line :: rlst) with | End_of_file -> List.rev rlst This syntax is somewhat awkward: untry is neither a third member of the try...with structure, because it must be inside the flow of let...in declaration, nor a stand-alone statement, because it must not be allowed anywhere outside try...with. On the contrary, as far as I can see, the semantics is quite simple.