sig
type 'a t = 'a MyStream.head Lazy.t
and 'a head = Nil | Cons of 'a * 'a MyStream.t
val equal : ('a -> 'b -> bool) -> 'a MyStream.t -> 'b MyStream.t -> bool
val from_list : 'a list -> 'a MyStream.t
val unfold : ('b -> ('a * 'b) option) -> 'b -> 'a MyStream.t
val concat : 'a MyStream.t -> 'a MyStream.t -> 'a MyStream.t
val take : int -> 'a MyStream.t -> 'a MyStream.t
val last : 'a MyStream.t -> 'a option
val iter : ('a -> unit) -> 'a MyStream.t -> unit
val map : ('a -> 'b) -> 'a MyStream.t -> 'b MyStream.t
end