诚实的新手问题。基于Russ Olsen的《学习Clojure》(Getting Clojure),我知道以下内容:
(1) 在运行时,Clojure代码会被编译为JVM字节码。
(2) 使用REPL可以运行Clojure代码,并获得几乎即时的反馈,REPL使用函数(read)和(eval)或等价函数。
因此,在REPL中,Clojure代码编译成JVM字节码必须在某个时刻发生,可能是在(read)阶段或稍后的某个阶段。
但这是一个模糊的想象,我想要澄清一下。
例如,知道在REPL何时编译代码,编译产生的数据如何存储在内存中,然后由(eval)访问,以及之间或之后发生的任何重要步骤,都是很好的了解。
换句话说,我想要更详细地了解制作香肠的过程:
Clojure如何编译在REPL中运行的代码?
(加分题:与Clojure从非REPL源(例如Leiningen项目)编译代码有何不同?)
(1) 在运行时,Clojure代码会被编译为JVM字节码。
(2) 使用REPL可以运行Clojure代码,并获得几乎即时的反馈,REPL使用函数(read)和(eval)或等价函数。
因此,在REPL中,Clojure代码编译成JVM字节码必须在某个时刻发生,可能是在(read)阶段或稍后的某个阶段。
但这是一个模糊的想象,我想要澄清一下。
例如,知道在REPL何时编译代码,编译产生的数据如何存储在内存中,然后由(eval)访问,以及之间或之后发生的任何重要步骤,都是很好的了解。
换句话说,我想要更详细地了解制作香肠的过程:
Clojure如何编译在REPL中运行的代码?
(加分题:与Clojure从非REPL源(例如Leiningen项目)编译代码有何不同?)