It would _not_ be nice if io.lines(nil) would open stdin, since an
accidental nil variable is all too common. Instead, it gives you an
error, as it should.
This relies on the fact that io.lines() defaults on stdin when given no argument. It could have been io.lines(io.stdin), for example.