On Jul 14, 2010, at 1:51 AM, Ben Lippmeier wrote: > Replacing equals by equals usually doesn't change anything. > > What kind of equality do you use for getChar :: IO Char ? The usual one: getChar = getChar. It's a pure value. If I find [getChar,getChar] in a program, I can safely replace it by let g = getChar in [g,g].