(* There is no undefined value in OCaml, but if you really need this you can use the built-in "option" type. It is defined like this: type 'a option = None | Some of 'a *) let inc = function Some n -> Some (n+1) | None -> failwith "Undefined argument";; inc (Some 0);; (* - : value = Some 1 *) inc None;; (* Exception: Failure "Undefined argument". *)