最新

val it : α → α = fun

<<  2005/09  >>

2005/09/08 LazyList のコードをふと見直していて

リストの型として、

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 おもすれー。