## REPL
REPL 是read-eval-print loop的縮寫. 這是Lisp的方言提供給用戶的一個標準交互方式,如果用過python的人應該用過這個,你輸入一個表達式,它立馬再給你輸出結果,你再輸入。。。如此循環。這是一個非常有用的學習語言,測試一些特性的工具。
為了啟動REPL, 運行我們上面寫好的clj腳本。成功的話會顯示一個” `user=>` “. “ `=>` ” 前面的字符串表示當前的默認名字空間。“=>”后面的則是你輸入的form以及它的輸出結果。 下面是個簡單的例子:
```
user=> (def n 2)
#'user/n
user=> (* n 3)
6
```
`def` 是一個 special form, 它相當于java里面的定義加賦值語句. 它的輸出表示一個名字叫 “ `n` ” 的symbol被定義在當前的名字空間 “ `user` ” 里面。
要查看一個函數,宏或者名字空間的文檔輸入 `(doc _name_)。看下面的例子:`
```
(require 'clojure.contrib.str-utils)
(doc clojure.contrib.str-utils/str-join) ; ->
; -------------------------
; clojure.contrib.str-utils/str-join
; ([separator sequence])
; Returns a string of all elements in 'sequence', separated by
; 'separator'. Like Perl's 'join'.
```
如果要找所有包含某個字符串的所有的函數的,宏的文檔,那么輸入這個命令 `(find-doc "_text_")` .
如果要查看一個函數,宏的源代碼 `(source _name_)` . `source` 是一個定義在 `clojure.contrib.repl-utils` 名字空間里面的宏,REPL會自動加載這個宏的。
如果要加載并且執行文件里面的clojure代碼那么使用這個命令 `(load-file "_file-path_")` . Clojure源文件一般以.clj作為后綴。
如果要退出REPL,在Windows下面輸出ctrl-z然后回車, 或者直接 ctrl-c; 在其它平臺下 (包括UNIX, Linux 和 Mac OS X), 輸入 ctrl-d.