Friend of mine, pointed out to me a case in Reason who cause no compile time error but run time error, I had reimplemented similar case in OCaml:



exception Generic_exc;;

let string_of_string s = string_of_int (int_of_string s)

let foo = string_of_string "foo"

let fun_exeption x =
    match x with
    0 -> 0
    | _ -> raise Generic_exc
;;

let bar = string_of_int (fun_exeption 5)



both foo and bar don't fail at compile time fail at run time, me and my friend also try to reimplement similar case (the first one with string and int) in Elm, and Elm compiler just say you have to manage exeption, because function can actualy return exeption instead of int.

There is a compile params or similar for check this kind of error? is a side effect of have a multi-paradigm? and if is it, how to manage it?

I belive I can use OCaml in functional way without just making attention to not use side effect but if use of function like int_of_string can make run time error, I probably approac to OCaml in wrong way, and I wanna understand how to correct it.