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