Ocamlの仕様

以下のソースを実行した。

# exit;;
 - : int -> 'a = 

引数がintで返り値が型多相・・・?
unitを返せばいいんではないかと最初考えた。これの理由が全く分からなかったわけだが、それだと

# let f x = if x == 1 then exit 1 else x;;
val f : int -> int = 

というソースが通らなくなる。なるほど、どんな型が来ても対応できるようになっているのか。型多相キモス。