clojure - Clojure 是编译的还是解释的?

标签 clojure compilation jvm-languages interpreted-language compiled-language

我在某处读到 Clojure 是编译的。它是真正的编译型(如 Java 或 Scala),还是解释型(如 Jython 或 JRuby)?

最佳答案

Clojure 始终编译

Clojure 编译器生成 Java 字节代码,然后通常由 JVM 将其 JIT 编译为 native 代码。

令人困惑的是 Clojure 的动态和交互特性,这意味着如果您愿意,您可以在运行时调用编译器。这都是 Lisp“代码就是数据”传统的一部分。

例如,以下代码将在运行时调用 Clojure 编译器来编译并执行表单 (+ 1 2):

(eval '(+ 1 2))
=> 3

在运行时调用编译器的能力非常有用 - 例如,它使您能够使用 REPL 在正在运行的 Clojure 应用程序中编译和运行新代码。但重要的是不要将这种“交互式”开发风格与“解释型”混淆 - Clojure 开发是交互式的,但仍然始终是编译的。

关于clojure - Clojure 是编译的还是解释的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5669933/

相关文章:

javascript - Typescript 内部模块 - 无法在同一模块中引用导出的类

c - 在 ubuntu for arm 上编译 TCC 的问题

java - 使用 Groovy/JRuby/Jython 或其他 JVM 语言的 UI 设计替代方案?

java - 帕斯卡中的 const TAB = ^I 是什么意思?

coldfusion - Coldfusion CFC 可以从 Java 实例化吗?

clojure - 如何在Clojure中获取与文件掩码(通配符)匹配的文件列表?

scala - Clojure future 的失败

function - Clojure 首先和休息

clojure - 如何使用 Datomic 分区?

compilation - iOS9,企业应用中的位码