I'm just wondering how flexible OCaml's polymorphic variants are.
I know I can use the same constructor across different types but what is meant by the same constructor?
I know its fine to use `Nil here.
type 'a vlist = [`Nil | `Cons of 'a * 'a vlist]
type 'a btree = [`Nil | `Node of ('a * 'a btree * 'a btree)]
But is it ever OK to use `Node like this?
type 'a vlist = [`Nil | `Node of 'a * 'a vlist]
type 'a btree = [`Nil | `Node of ('a * 'a btree * 'a btree)]