I think the difficult point is `IO` includes various IO. When a developer deal with standard IO(a keyboard and a display), he don't have to necessarily consider `:eof`, but when he deal with file IO, he have to consider `:eof`.