(And that begs the question of why getArgs needs to be monadic in the first place. It doesn't change its value; it's a strict constant at run-time, and not knowing it at compile time is my problem how?)
But it is the *compiler's* problem. "Constant" means "known at compile time" to the compiler.
Although I wonder if you'd be happier with getArgs >>= mapM_ (do ...).