let of_string_exn s' = let s = String.uppercase s' in try ignore (arabic s); s with BadNumeral c -> raise_bad (sprintf "roman numeral %s contains illegal character %c" s' c)