title: Infinite Lists / Streams in ReScript
body: <p>I can't seem to find the correct typing for an infinite list in ReScript.</p>
  <p>I first tried:</p>
  <pre><code>type rec stream&lt;'a&gt; = ('a, () =&gt; ('a, stream&lt;'a&gt;))
  </code></pre>
  <p>Which was incorrect because ReScript thought the type was cyclic. So instead I tried:</p>
  <pre><code>type rec stream&lt;'a&gt; = ('a, Lazy.t&lt;() =&gt; ('a, stream&lt;'a&gt;)&gt;)
  </code></pre>
  <p>Which still gave me a type error.</p>
  <p>Ultimately I am trying to get this piece of code to work but it fails due to the type signature being infinite.</p>
  <pre><code>let rec from: (int, Lazy.t&lt;() =&gt; (int, Lazy.t&lt;...&gt;) = (x: int) =&gt; {
      (x, () =&gt; Lazy.from_fun(from(x+1)))
  }
  </code></pre>