types and programming language Ocaml code