> Lennart advocates the use of streams :
> 
> >   let mis = take n (random ss1)
> >       is  = take n (toInt (random ss2))
> >       ds  = take n (toDouble (random ss3))
> >   in  ...
> 
> and I agree entirely with him, although the coding details might
> be different. Streams are nice and safe. And methodologically
> sane.

Surely it would be better to split the one stream into several infinite ones:

  splitStream :: [a] -> ([a],[a])

  splitStream xs = unzip (spl xs)
    where spl (x:y:xs) = (x,y):(spl xs)

Then you don't have to know how many you are going to use from each stream.

--KW 8-)
-- 
: Keith Wansbrough, MSc, BSc(Hons) (Auckland) ------------------------:
: PhD Student, Computer Laboratory, University of Cambridge, England. :
:  (and recently of the University of Glasgow, Scotland. [><] )       :
: Native of Antipodean Auckland, New Zealand: 174d47' E, 36d55' S.    :
: http://www.cl.cam.ac.uk/users/kw217/  mailto:[EMAIL PROTECTED]     :
:---------------------------------------------------------------------:



Reply via email to