Hindley-Milner in OCaml