Thanks for reply, one more question there is a way in OCaml, for know if function can produce side effects? I mean automatic way not read documentation or source code ^^" 2018-02-01 8:10 GMT+01:00 Malcolm Matalka : > Exceptions basically mean "runtime error". This is why some APIs use > the result type instead of exceptions. So the API could be something > like: > > val int_of_string : string -> (int, err) result > > where err is some error type. > > I wrote a blog post about this years ago, the APIs in it might be out > dated but the general concept is probably still applies: > > http://functional-orbitz.blogspot.se/2013/01/experiences-using-resultt-vs- > exceptions.html > > Lorenzo Pomili writes: > > > 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. > >