OCamlのLazyモジュールで遊んでみました。 とりあえず、lazy (OCamlの予約語) と Lazy.force だけ覚えておけばよさそうです。 lazy 'a -> 'a lazy_t *1。 'a lazy_t なる、文字通りlazyな型を作り出す。 Lazy.force 'a Lazy.t -> 'a。 Lazy.t (=lazy_t) の皮をひっぺがす。 単純ですね。 こいつを使って、Haskell御用達の無限リストを作ってみましょー。 (* 無限リスト *) module InfList : sig type 'a t val from : int -> int t val head : 'a t -> 'a val tail : 'a t -> 'a t val take : int -> 'a t -> 'a list val map : ('a -> 'b) ->