Implementations of various data structures in pure OCaml