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.