Skip to content

Instantly share code, notes, and snippets.

@jkk
Created January 22, 2010 22:35
Show Gist options
  • Save jkk/284230 to your computer and use it in GitHub Desktop.
Save jkk/284230 to your computer and use it in GitHub Desktop.
;;
;; NS CHEATSHEET
;;
;; * :require makes functions available with a namespace prefix.
;;
;; * :use makes functions available without a namespace prefix
;; (i.e., refers functions to the current namespace).
;;
;; * :import refers Java classes to the current namespace.
;;
;; * :refer-clojure affects availability of built-in (clojure.core)
;; functions.
;;
;; Rules of thumb:
;;
;; * Use lists to reduce repetition in namespace paths. These are
;; equivalent:
;;
;; (:require clojure.contrib.math clojure.contrib.seq-utils)
;; (:require (clojure.contrib math seq-utils))
;;
;; * Use vectors for keyword options. Examples (which are equivalent):
;;
;; (:use [clojure.contrib.math :only [sqrt]])
;; (:use (clojure.contrib [math :only [sqrt]]))
;;
(ns foo.bar
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Refers clojure.contrib.math into current NS, e.g.:
;; (clojure.contrib.math/sqrt 4)
(:require (clojure.contrib math))
;; Refers math into current NS, e.g.:
;; (math/sqrt 4)
(:require (clojure.contrib [math :as math]))
;; Refers clojure.contrib.seq-utils and math into current NS, e.g.:
;; (clojure.contrib.seq-utils/flatten [[1 2] 3])
;; (math/sqrt 4)
(:require (clojure.contrib seq-utils [math :as math]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Refers all functions from clojure.contrib.math and
;; clojure.contrib.seq-utils into current NS, e.g.:
;; (sqrt 4)
;; (flatten [[1 2] 3])
(:use (clojure.contrib math seq-utils))
;; Refers only sqrt and flatten into current NS, e.g.:
;; (sqrt 4)
;; (flatten [[1 2] 3])
(:use (clojure.contrib [math :only [sqrt]]
[seq-utils :only [flatten]]))
;; Refers all functions from clojure.contrib.math except sqrt into
;; current NS
(:use [clojure.contrib.math :exclude [sqrt]])
;; Refers sqrt into current NS as ccm-sqrt, plus all other math
;; functions e.g.:
;; (ccm-sqrt 4)
;; (round 1.3)
(:use [clojure.contrib.math :rename {sqrt ccm-sqrt}])
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Refers ArrayList and HashMap into current NS:
(:import (java.util ArrayList HashMap))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Excludes built-in print
(:refer-clojure :exclude [print])
;; Excludes all built-ins except print
(:refer-clojure :only [print])
;; Renames built-in print to core-print
(:refer-clojure :rename {print core-print}))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment