Session-type implementation in OCaml