Clojure

动态开发

首先,Clojure 是动态的。这意味着 Clojure 程序不仅仅是您编译和运行的东西,而是一些您可以与之交互的东西。Clojure 不是一种语言抽象,而是一个环境,其中几乎所有语言结构都被具体化,因此可以检查和更改。这导致了与运行程序、检查其结果(或失败)和重试完全不同的体验。特别是,您可以通过数据加载、添加功能、修复错误、测试,在一个不间断的流中扩展您的程序。

REPL

虽然 Clojure 可以嵌入到 Java 应用程序中,也可以用作脚本语言,但主要的编程接口是 Read-Eval-Print-Loop (REPL)。这是一个简单的控制台界面,允许您输入和执行命令,并检查其结果。您可以像这样启动 Clojure REPL,然后继续尝试本功能之旅中的示例

java -cp clojure.jar clojure.main

这将为您提供这样的提示

user=>

大多数 Clojure 命令采用 (command arguments*) 的形式。试试看

(def x 6)
-> #'user/x
(def y 36)
-> #'user/y
(+ x y)
-> 42

基础

Clojure 具有任意精度的整数、字符串、比率、双精度数、字符、符号、关键字。

(* 12345678 12345678)
-> 152415765279684
"string"
-> "string"
22/7
-> 22/7
3.14159
-> 3.14159
\a
-> \a
'symbol
-> symbol
:keyword
-> :keyword
;a comment

动态编译

Clojure 是一种编译语言,因此您可能想知道何时运行编译器。您不需要。您输入 REPL 或使用 load-file 加载的任何内容都会自动实时编译为 JVM 字节码。提前编译也是可能的,但不是必需的。