id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	os	architecture	failure	difficulty	testcase	blockedby	blocking	related
4218	System.Random is way too lazy	EyalLotem	rrnewton	"randomRs is too lazy, generates lists of large lazy-state thunks, rather than lists of strict values.

Test program is attached.

Also, randomIO is too lazy, and builds up huge thunks. Using (randomIO >>= evaluate) is fine, however.

Fails with stack overflow:
{{{
  rs <- replicateM 1000000 evaluate :: IO [Int]
  print $ last rs
}}}
Works:
{{{
  rs <- replicateM 1000000 (evaluate =<< randomIO) :: IO [Int]
  print $ last rs
}}}
"	bug	new	low	7.6.2	Compiler	6.12.3		random stack overflow		Unknown/Multiple	Unknown/Multiple	None/Unknown					
