Clojure 快速开始

环境配置

要求Java 1.5或者更高版本(JavaSDK)。

下载(http://clojure.org/downloads)并且解压缩Clojure源代码包。在解压缩clojure.zip的目录中,执行命令:

# java -cp clojure-1.4.0.jar clojure.main

这将出现一个简单的读取-执行-打印循环(REPL)窗口,对于REPL,尝试:

$java -cp clojure-1.4.0.jarclojure.main

Clojure 1.4.0

user=>

user=> (+ 1 2 3)

6

user=>(javax.swing.JOptionPane/showMessageDialog nil "Hello World")

nil

Clojure工具,IDE

VIM-Clojure

Counter Clockwise-Eclipse

LaClojure-IntelliJ IDEA-Leiningen

Enclojure-Netbeans

Emacs-Clojure Mode-Swank-Slime

线上REPL

如果你连环境都不想安装,想直接体验一下Clojure的Lisp感觉,你只要保证你联网,就能做到.

打开http://www.tryclj.com/,这里不需要做任何配置,直接在浏览器上就可以试验 Clojure

项目地址: http://www.tryclj.com/

源码安装

首先要配置好JDK环境,这里不多说.

这个是clojure项目github: https://github.com/clojure/clojure

让我们直接从源码build打包,然后在java命令行进入Clojure交互运行环境REPL.

执行如下命令:

git clone https://github.com/clojure/clojure
cd clojure
mvn package -Dmaven.test.skip

然后,我们可以在target目录下面,看到clojure-1.9.0-master-SNAPSHOT.jar

在命令行,直接运行java命令行:

java -cp clojure-1.9.0-master-SNAPSHOT.jar clojure.main

我们即可进入Clojure的交互式命令行环境(read-eval-print loop (REPL)):

Clojure 1.9.0-master-SNAPSHOT
user=> (+ 1 2 3)
6
user=> (javax.swing.JOptionPane/showMessageDialog nil "Hello,Clojure!")
nil

输出如下图:

使用Leiningen

Leiningen是一个Clojure项目管理工具。

Mac上使用homebrew安装

sudo brew install leiningen

如果因为网络原因安装失败,删除掉~/.lein目录后重新执行lein命令即可。 现在可以启动一个REPL会话,更简单:

lein repl

启动成功,控制台输出:

Retrieving org/clojure/tools.nrepl/0.2.12/tools.nrepl-0.2.12.pom from central
Retrieving clojure-complete/clojure-complete/0.2.4/clojure-complete-0.2.4.pom from clojars
Retrieving org/clojure/clojure/1.8.0/clojure-1.8.0.pom from central
Retrieving org/clojure/tools.nrepl/0.2.12/tools.nrepl-0.2.12.jar from central
Retrieving org/clojure/clojure/1.8.0/clojure-1.8.0.jar from central


Jun 28, 2016 4:14:21 PM org.apache.http.impl.execchain.RetryExec execute
資訊: I/O exception (java.net.SocketException) caught when processing request to {s}->https://clojars.org:443: Connection reset
Jun 28, 2016 4:14:21 PM org.apache.http.impl.execchain.RetryExec execute
資訊: Retrying request to {s}->https://clojars.org:443
Retrieving clojure-complete/clojure-complete/0.2.4/clojure-complete-0.2.4.jar from clojars
nREPL server started on port 58986 on host 127.0.0.1 - nrepl://127.0.0.1:58986
REPL-y 0.3.7, nREPL 0.2.12
Clojure 1.8.0
Java HotSpot(TM) 64-Bit Server VM 1.8.0_40-b27
    Docs: (doc function-name-here)
          (find-doc "part-of-name-here")
  Source: (source function-name-here)
 Javadoc: (javadoc java-object-or-class-here)
    Exit: Control+D or (exit) or (quit)
 Results: Stored in vars *1, *2, *3, an exception in *e


user=> (* 1 2 3 4 5 6 7 8 9)
362880
user=> (+ 1 2 3 4 5 6 7 8 9)
45

再识 Clojure

Clojure 自身到底是什么?Clojure 自身只是一个 clojure.jar 文件,它负责把 Clojure 代码编译成 JVM 可以运行的 .class 文件。如果预先把 Clojure 代码编译为 .class,那么运行时也不需要 clojure.jar 了。

Clojure 自身也作为 Maven 的一个包,您应该可以在用户目录下找到 Maven 管理的 clojure-1.6.0.jar 以及源码:

.m2/repository/org/clojure/clojure/1.6.0/

如果要在命令行运行 Clojure 代码,需要自己把 classpath 设置好,入口函数是

clojure.main

参数是要运行的 .clj 文件.

results matching ""

    No results matching ""