This might make a good FAQ question: On Dec 20, 11:25 am, chris <cnuern...@gmail.com> wrote: > I am unclear as to the difference between refer, import use, and require.
Hi Chris, require: Load a Clojure library from a file on classpath. Use this when you want to load a library, but leave it in its own namespace. refer: Bring public symbols from one namespace into the current namespace. Use this when a library has already been loaded (example: clojure.set) but you want to use its public symbols without a namespace qualifier. import: Copy Java class names into current namespace. Use this when you want to use a Java class without typing the full package name. use: Combination of require and refer. Use this when you want to load a library AND use its symbols without a namespace qualifier. All four are available as keyword arguments to "ns", which is the preferred way to use them: (ns foo.bar (:use my.little.lib) (:require clojure.contrib.duck-streams) (:import (java.io File InputStream)) (:refer clojure.set)) ":require" also allows aliasing, like this: (ns foo.bar (:require [clojure.set :as set])) Now you can write the symbol "clojure.set/union" as "set/union". -Stuart Sierra --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---