Register Transfer Level Hardware Design in OCaml