リストの型として、
type 'a t = [ `Nil | `Cons of ('a * 'a t lazy_t) ]
なる型を定義していたのだが、よく考えるとこれは、
type 'a t = ('a * 'a t lazy_t) option
としておけばいいことに気付いた。
のだが、こういう型定義は本来ヤバいのでコンパイルは通らない。 -rectypes しましょ。
わざわざ option にする意味は特にないと思う。けど、 OCaml に標準で用意されている型だし、それ用のユーティリティ関数もそれなりにあるようなので、その方が楽だろー。
ところで、ということは、たとえば二分木は、
type 'a tree = ('a * 'a tree * 'a tree) option
として表現可能なのだなあと今更ながら気付いた。 rectypes おもすれー。