Well, if somebody breaks the kernel so that printing doesn't work, it will most likely return something strange, in the case of Clojure, an exception.
A pure function always returns the same result because it only depends on its input parameters. An impure IO function does not.