繼續閱讀《Clojure for the Brave and True》
comp(composition):組合多個函數為一新函數;又成為memoize:可以記住呼叫過的函數參數、結果的配對def 是如何將物件存於當前命名空間下(ns-interns *ns*) 來查看物件的所處空間(create-ns *ns*)、(ns-name *ns*) 及整合指令  (in-ns *ns*)
refer:將別的命名空間的全部物件引入到當前命名空間
ns-a 中使用 (clojure.cire/refer 'ns-b) 可以引入並能直接呼叫 ns-b 中的物件:only、exclude、rename,可以只引入想要或把不想引入的排除clojure.core 自動 refer 到當前使用者空間 *user*,然而在一般的使用者程式中不會,所以若要使用 refer,也必須在前面加上 refer  所處的命名空間 clojure.core
alias 可以重命名 namespacens 這個 macrovar wrestlers = getAlligatorWrestlers();
var totalBites = 0;
var l = wrestlers.length;
for(var i = 0; i < l; i++){
    totalBites += wrestlers[i].timesBitten;
}
在以上的 Javascript 中,迴圈應用到了外部變數如 totalBites。在這個迴圈執行後,totalBites 也被修改了,用者無法存取原本的值(除非存在另一個變數中)。在 Clojure 中,無法修改任何東西。資料總是以類似「流」的方式在函數間傳遞。類似變數的方案是通過下述模式進行:處理後的新資料,被指定對應到舊的名稱(reference)。
compcomp 可以把兩個函數合成一個(術語:composition)
(defn example [c] (func-a (func-b c)))
(def example (comp func-a func-b))
memoizememoize 可以記住遞迴過程中的「參數-結果」,節省遞迴所需要的時間。
(defn fib [n]
  (condp = n
    0 0
    1 1
    (+ (fib (dec n)) (fib (- n 2)))))
(def m-fib
  (memoize (fn [n]
             (condp = n
               0 1
               1 1
               (+ (m-fib (dec n)) (m-fib (- n 2)))))))
(time (fib 30))   ;; "Elapsed time: 269.306696 msecs"
(time (m-fib 30)) ;; "Elapsed time: 5.656127 msecs"
一個最簡的常見資料夾結構如下述:
| project.clj
| src 
  └ the_divine_cheese_code 
    ├ core.clj
    └ visualization
      └ svg.clj
在 core.clj 中,為了生出 Java class,可能要寫:
(ns the-divine-cheese-code.core
  (:require [thedivine-cheese-code.visualization.svg :as svg])
  (:gen-class))
require 的目的是讓命名空間可用。refer 的目的是去除前綴而 alias 是保留前綴但改名。use 則等同於 require + alias。