The goal is to quote characters. Thus, they will be considered characters, and use can accept these characters as namespace names for loading and drawing into the current one. You want to avoid the default processing of a character that resolves it as the name Var and uses the value of that Var. You can also do it like
(use ['clojure.string :as 'str])
but this requires some unnecessary typing; quoting the entire vector allows you least to forget anything. In particular, if you are doing something with :only :refer or similar keyword arguments.
In addition: ns does not need this because, as a macro, it can control the evaluation of its arguments - functions such as require and use have all their arguments read and evaluated before they are run. This is part of the reason ns usually preferred over these functions.
source share