Clojure printing functions: pr vs print

clojure

Solution

They differ in the following ways.

- `print`/`println` produce output intended for human consumption

- `pr`/`prn` produce output that may be read by the reader

So use the former functions when producing output for humans, and the latter for when producing output for other Clojure programs to consume.

In the case of `pr`/`prn`, strings will be quoted, and special characters escaped. Characters will also be escaped outside of strings.

For example:

=> (println "Hello\nworld" \!)
Hello
world !

=> (prn "Hello\nworld" \!)
"Hello\nworld" \!

Problem

What is the difference between `pr`/`prn` and `print`/`println`? When would one be used over the other?

Original source