什么是Clojure REPL?它背后的技术是什么?

时间:2016-01-07 16:11:27

标签: clojure

我知道Clojure Repl 做了什么以及它是如何有用的,但我没有任何关于它内部如何工作的信息。它是在JVM中运行的程序吗? repl的内部如何工作?

1 个答案:

答案 0 :(得分:8)

背后的技术:

  1. 微小的Java入口点:

    https://github.com/clojure/clojure/blob/clojure-1.7.0/src/jvm/clojure/main.java

  2. 用Clojure编写的REPL的实际实现:

    https://github.com/clojure/clojure/blob/clojure-1.7.0/src/clj/clojure/main.clj

  3. 这些链接指向1.7.0版本的文件,这是本文撰写时最新的稳定版本。

    总结一下这些做法,clojure.main是一个小型Java类,其main方法作为REPL的入口点。 (所以,它只是一个标准的Java程序。)main方法接受任何参数并将它们交给clojure.main Clojure命名空间中的函数(使用一些简单的方法调用clojure.lang.RT类实现了Clojure运行时的一些核心细节以获得有问题的函数 - 严格来说,就是保存函数的Var。然后,所述函数调用实际读取用户输入的代码,评估它,打印出结果并再次循环读取更多输入,直到由 Cd 或其他方法终止,并具有各种复杂性,如设置一些Var绑定等(允许用户控制REPL操作和某些编译器设置的某些方面)。