Ich weiß, was die Clojure Repl tut und wie es nützlich ist, aber ich habe keine Informationen darüber, wie die Interna davon funktionieren. Ist es ein Programm, das in der JVM läuft? Wie funktionieren die Interna eines Replikats?
Antworten:
8 für die Antwort № 1Die Technologie dahinter:
der kleine Java Einstiegspunkt:
https://github.com/clojure/clojure/blob/clojure-1.7.0/src/jvm/clojure/main.java
die tatsächliche Implementierung der in Clojure geschriebenen REPL:
https://github.com/clojure/clojure/blob/clojure-1.7.0/src/clj/clojure/main.clj
Die Links beziehen sich auf die 1.7.0-Versionen der Dateien, die zum Zeitpunkt des Schreibens die letzte stabile Version waren.
Um zusammenzufassen, was diese tun, clojure.main
ist eine kleine Java - Klasse mit einem main
Methode, die als Einstiegspunkt für die REPL dient. (Also, es ist nur ein Standard-Java-Programm.) Das main
Methode akzeptiert alle Argumente und übergibt sie an eine Funktion in der clojure.main
Clojure - Namespace (mit ein paar einfachen Methodenaufrufen in der clojure.lang.RT
Klasse, die einige Kerndetails derClojure-Laufzeit, um auf die fragliche Funktion zu kommen - naja, streng genommen der Var, der die Funktion hält. Dann ruft die genannte Funktion einen Code auf, der tatsächlich Benutzereingaben liest, ihn auswertet, das Ergebnis ausgibt und um den gelesenen Eingang herumläuft, bis er beendet wird CD oder eine andere Methode, mit verschiedenen Komplikationen wie dem Einrichten einiger Var-Bindungen und so (um dem Benutzer die Kontrolle über einige Aspekte der REPL-Operation und bestimmte Compiler-Einstellungen zu erlauben).