> To put that another way, why do you want to close stdout?
I do not want to. I am saying that it is easy to mistype f.close() for f:close(), and then the result is... strange.
Given that closing stdout seems to have been impossible since at least 5.2, I would say io.close() should simply be made invalid and documented as such, making f.close() also a straight-forward error.