This is the only really correct amount of laziness. You want a call to bind not to compute anything except a thunk and when evaluating the thunk you want everything fully evaluated.