title: how to define two types referring to each other in OCaml?
body: <p>The code below will report Syntax error message:</p>
  
  <pre><code>type 'a edge = 
    |Empty 
    |End of 'a * 'a vertex * 'a vertex and
  type 'a vertex = 
    |Empty
    |Vertex of 'a * 'a edge list;;
  </code></pre>
  
  <p>How to define two types referring to each other?</p>