Lazy data structures in OCaml