ns
(ns name clauses...)
Switches to the namespace, creating it, and wires its clauses: :as registers an alias,
:refer/:use unqualified names, :import class names for interop, and
(:refer-clojure :only ...)/(:refer-clojure :exclude ...) narrow the visible core. There
is no :rename. The definitions below the form belong to the namespace. A required
namespace other than clojure.string, clojure.set, clojure.java.io (reader only) and clojure.test
is a project namespace: one an earlier ns form of the program declared, or one whose
file on the source path loads when the clause runs -- once per program, again under
:reload (Semantics); a file
no root holds is an error.