macro | since v0.0-2629 | clojure.core/require | Edit |
(require & args)
Only usable from a REPL.
Loads libs, skipping any that are already loaded. Each argument is either a libspec that identifies a lib or a flag that modifies how all the identified libs are loaded.
A libspec is a lib name or a vector containing a lib name followed by options expressed as sequential keywords and arguments.
Recognized options:
:as
takes a symbol as its argument and makes that symbol an alias to the
lib's namespace in the current namespace.:refer
takes a list of symbols to refer from the namespace..:refer-macros
takes a list of macro symbols to refer from the namespace.:include-macros
takes a list of macro symbols to refer from the namespace.A flag is a keyword. Recognized flags:
:reload
forces loading of all the identified libs even if they are
already loaded:reload-all
implies :reload and also forces loading of all libs that the
identified libs directly or indirectly load via require or use:verbose
triggers printing information about each load, alias, and refer(require '[clojure.string :as string])
Loads libs, skipping any that are already loaded. Each argument is either a libspec that identifies a lib or a flag that modifies how all the identified libs are loaded. Use :require in the ns macro in preference to calling this directly. Libs A 'lib' is a named set of resources in classpath whose contents define a library of ClojureScript code. Lib names are symbols and each lib is associated with a ClojureScript namespace. A lib's name also locates its root directory within classpath using Java's package name to classpath-relative path mapping. All resources in a lib should be contained in the directory structure under its root directory. All definitions a lib makes should be in its associated namespace. 'require loads a lib by loading its root resource. The root resource path is derived from the lib name in the following manner: Consider a lib named by the symbol 'x.y.z; it has the root directory/x/y/, and its root resource is /x/y/z.clj. The root resource should contain code to create the lib's namespace (usually by using the ns macro) and load any additional lib resources. Libspecs A libspec is a lib name or a vector containing a lib name followed by options expressed as sequential keywords and arguments. Recognized options: :as takes a symbol as its argument and makes that symbol an alias to the lib's namespace in the current namespace. :refer takes a list of symbols to refer from the namespace. :refer-macros takes a list of macro symbols to refer from the namespace. :include-macros true causes macros from the namespace to be required. :rename specifies a map from referred var names to different symbols (and can be used to prevent clashes) Flags A flag is a keyword. Recognized flags: :reload, :reload-all, :verbose :reload forces loading of all the identified libs even if they are already loaded :reload-all implies :reload and also forces loading of all libs that the identified libs directly or indirectly load via require or use :verbose triggers printing information about each load, alias, and refer Example: The following would load the library clojure.string :as string. (require '[clojure.string :as string])
(core/defmacro require
[& args]
`(~'ns* ~(cons :require args)))