Not a big problem, but strange nevertheless: # exception E of string * string;; exception E of string * string # let f () = raise (E ("a", "b"));; val f : unit -> 'a = # try f (); failwith "Not found" with E (a,b) -> (a,b);; - : string * string = ("a", "b") # try f (); failwith "Not found" with E t -> t;; --- The constructor E expects 2 argument(s), but is here applied to 1 argument(s) (In my actual code I want to return the thrown tuple to the caller). Rich. -- Richard Jones. http://www.annexia.org/ http://www.j-london.com/ >>> http://www.team-notepad.com/ - collaboration tools for teams <<< Merjis Ltd. http://www.merjis.com/ - improving website return on investment Use Perl libs in OCaml - http://www.merjis.com/developers/perl4caml