sig
  type +'a stream
  val fork : ('-> 'b) * ('-> 'c) -> '-> 'b * 'c
  val take : int -> 'Streams.stream -> 'a list
  val unfold : ('-> 'b * 'a) -> '-> 'Streams.stream
  val univ : ('-> 'b) * ('-> 'a) -> '-> 'Streams.stream
  val hd : 'Streams.stream -> 'a
  val tl : 'Streams.stream -> 'Streams.stream
  val repeat : '-> 'Streams.stream
  val map : ('-> 'b) -> 'Streams.stream -> 'Streams.stream
  val diag : 'Streams.stream Streams.stream -> 'Streams.stream
  val suffixes : 'Streams.stream -> 'Streams.stream Streams.stream
  val interleave :
    'Streams.stream -> 'Streams.stream -> 'Streams.stream
  val fibs : int Streams.stream
  val pi : float Streams.stream
  val look_and_say : int list Streams.stream
end