Neunte Aufzählungspunkt in Paul Grahams What Made Lisp Different sagtKann "Die ganze Sprache immer verfügbar" im Falle von Clojure gehalten werden?
9. Die ganze Sprache immer zur Verfügung.
Es gibt keinen wirklichen Unterschied zwischen Lesezeit, Kompilierzeit und Laufzeit. Sie können Code beim Lesen, Lesen oder Ausführen von Code während des Kompilierens kompilieren oder ausführen und Code zur Laufzeit lesen oder kompilieren.
Durch Ausführen von Code zur Lesezeit können Benutzer die Lisp-Syntax neu programmieren; das Ausführen von Code zur Kompilierzeit ist die Basis von Makros; das Kompilieren zur Laufzeit ist die Grundlage für die Verwendung von Lisp als Erweiterungssprache in Programmen wie Emacs; und das Lesen zur Laufzeit ermöglicht es Programmen, unter Verwendung von s-Ausdrücke zu kommunizieren, eine Idee, die kürzlich als XML neu erfunden wurde.
Hält dieser letzte Aufzählungspunkt für Clojure?
Nur um klar zu sein, ist es in Clojure möglich, Code zu beliebigen Zeiten zu "lesen" und dann zu kompilieren und auszuführen; es ist jedoch nicht möglich, in den Leser zu stecken, um bei der Lesezeit willkürlichen Code auszuführen, wie es bei Common Lisp der Fall ist. –
Liebe den Hack. Danke für den Link! :-D – missingfaktor
Clojure kann beim Lesen mit dem '# =' reader-Makro beliebigen Code ausführen. –