sig
  type 'a llist = Nil | Cons of 'a * 'a Llist.llist Lazy.t
  val hd : 'a Llist.llist -> 'a
  val tl : 'a Llist.llist -> 'a Llist.llist
  val take : int -> 'a Llist.llist -> 'a list
  val map : ('a -> 'b) -> 'a Llist.llist -> 'b Llist.llist
  val repeat : 'a -> 'a Llist.llist
  val app : 'a Llist.llist -> 'a Llist.llist -> 'a Llist.llist
  val combine : 'a Llist.llist -> 'b Llist.llist -> ('a * 'b) Llist.llist
  val filter : ('a -> bool) -> 'a Llist.llist -> 'a Llist.llist
  val concat : 'a Llist.llist Llist.llist -> 'a Llist.llist
  val unfoldr : ('b -> ('a * 'b) option) -> 'b -> 'a Llist.llist
  val continually : (unit -> 'a) -> 'a Llist.llist
  val from : int -> int Llist.llist
  val of_stream : 'a Stream.t -> 'a Llist.llist
  val sllist :
    ?items:int -> string -> ('a -> string) -> 'a Llist.llist -> string
  val of_string : string -> char Llist.llist
end