clojure lib
A lib is a source file located at a path that corresponds to a symbolic name.
By convention, a lib creates a namespace of the same symbolic name.
The require function loads a lib by its symbolic name and ensures switch back to namespace before the load.
(in-ns 'foo) (require 'clojure.java.io) ; loads clojure/java/io.clj ; ... foo is still current namespace