【发布时间】:2020-09-22 18:00:36
【问题描述】:
诚实的菜鸟问题。根据 Russ Olsen 的 Getting Clojure,我知道以下几点:
(1) Clojure 代码在运行前编译为 JVM 字节码。
(2) Clojure 代码可以在使用函数 (read) 和 (eval) 或等效函数的 REPL 中运行,几乎是即时反馈。
因此,Clojure 代码到 JVM 字节码的编译似乎必须在 REPL 期间的某个时间点发生,大概是在(读取)阶段或之后不久。
但这是一个模糊的心理画面,我想澄清一下。
例如,很高兴知道在 REPL 中代码何时真正被编译,从编译创建的数据如何存储在 RAM 中,然后 由 (eval) 访问,以及在这期间或之后发生的任何重要步骤。
换句话说,我想更详细地了解香肠的真正制作方法:
Clojure 如何编译在 REPL 中运行的代码?
(加分项:这与 Clojure 从非 REPL 源(例如 Leiningen 项目)编译代码时所做的有什么不同?)
【问题讨论】:
标签: clojure compilation read-eval-print-loop