type 'a stream = unit -> 'a * 'a stream