sig
  type 'a node = Nil | Cons of 'a * 'a LazyList.t
  and 'a t = 'a LazyList.node Lazy.t
  val nil : 'a LazyList.t
  val cons : 'a -> 'a LazyList.t -> 'a LazyList.t
  val to_list : 'a LazyList.t -> 'a list
  val to_seq : 'a LazyList.t -> 'a Sequence.t
  val fold : ('a -> 'b -> 'a) -> 'a -> 'b LazyList.t -> 'a
end