
time t: f 42 (computational process implementing func application begins…) t+1: <keystroke> = 1 t+2: 43 (… and ends)
time t+3: f 42 t+4: <keystroke> = 2 t+5: 44
Conclusion: f 42 != f 42
That conclusion would only follow if the same IO action always produced the same result when performed twice in a row. That's obviously untrue, so the conclusion doesn't follow. What you've done is entirely consistent with the fact that f 42 = f 42... it just demonstrates that whatever f 42 is, it doesn't always produce the same result when you o it twice. What Conal is getting at is that we don't have a formal model of what an IO action means. Nevertheless, we know because f is a function, that when it is applied twice to the same argument, the values we get back (which are IO actions, NOT integers) are the same. -- Chris Smith