Two reasons: first, IIRC readLine can except. I don't believe println can, but better to be safe with system cals 🙂 Second, we'd like for them to be lazy and composable w/ short-circuiting, so they need to be lifted to a type that does both. IO in this example.