sig
  exception LazyListFailure of string
  type 'a node_t = Nil | Cons of 'a * 'LList.t
  and 'a t = 'LList.node_t Lazy.t
  val nil : 'LList.node_t lazy_t
  val iter : ('-> 'b) -> 'LList.node_t Lazy.t -> unit
  val iteri : (int -> '-> 'b) -> 'LList.node_t Lazy.t -> unit
  val map : ('-> 'b) -> 'LList.t -> 'LList.t
  val fold_left : ('-> '-> 'a) -> '-> 'LList.node_t Lazy.t -> 'a
  val fold_right : ('-> '-> 'b) -> '-> 'LList.node_t Lazy.t -> 'b
  val length : int LList.node_t Lazy.t -> int
  val hd : 'LList.node_t Lazy.t -> 'a
  val tl : 'LList.node_t Lazy.t -> 'LList.t
  val nth : 'LList.node_t Lazy.t -> int -> 'a
  val rev : 'LList.node_t Lazy.t -> 'LList.t
  val eager_append : 'LList.t -> 'LList.t -> 'LList.t
  val rev_append : 'LList.t -> 'LList.t -> 'LList.t
  val append : 'LList.t -> 'LList.t -> 'LList.t
  val concat : 'LList.t list -> 'LList.t
  val flatten : 'LList.t LList.t -> 'LList.t
  val to_list : 'LList.node_t Lazy.t -> 'a list
  val to_stream : 'LList.node_t Lazy.t -> 'Stream.t
  val to_array : 'LList.node_t Lazy.t -> 'a array
  val of_list : 'a list -> 'LList.t
  val of_stream : 'Stream.t -> 'LList.t
  val eager_of_list : 'a list -> 'LList.t
  val of_array : 'a array -> 'LList.t
  val filter : ('-> bool) -> 'LList.node_t Lazy.t -> 'LList.t
  val exists : ('-> bool) -> 'LList.node_t Lazy.t -> bool
  val for_all : ('-> bool) -> 'LList.node_t Lazy.t -> bool
  val range : int -> int -> int LList.t
  val map_filter : ('-> 'b option) -> 'LList.node_t Lazy.t -> 'LList.t
end