Sink your teeth into that. Code generation at compile time, functional programming etc.
The compiler can actually check that this is pure for you but in this case it isn't performed so it can read from stdin