16 Stimmen

Gilt "Die ganze Sprache immer verfügbar" im Falle von Clojure?

Neunter Aufzählungspunkt in Paul Graham's Was Lisp anders macht sagt,

9. Die gesamte Sprache immer verfügbar.

Es gibt keinen wirklichen Unterschied zwischen Lesezeit, Kompilierzeit und Laufzeit. Sie können Code beim Lesen kompilieren oder ausführen, Code beim Kompilieren lesen oder ausführen und Code zur Laufzeit lesen oder kompilieren.

Das Ausführen von Code zur Lesezeit ermöglicht es dem Benutzer, die Syntax von Lisp neu zu programmieren; das Ausführen von Code zur Kompilierzeit ist die Grundlage 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, mit s-Ausdrücken zu kommunizieren, eine Idee, die kürzlich als XML neu erfunden wurde.

Gilt dieser letzte Aufzählungspunkt auch für Clojure?

13voto

Michał Marczyk Punkte 82196

Sie können in Clojure Laufzeit und Kompilierzeit frei mischen, obwohl Common Lisp hier noch etwas flexibler ist (aufgrund des Vorhandenseins von Compiler-Makros und Symbol-Makros und einer vollständig unterstützten macrolet Clojure hat einen Vorteil in seinem coolen Ansatz zur Makrohygiene durch automatische Symbolauflösung in syntax-quote). Der Reader ist derzeit geschlossen, so dass die freie Vermischung von Laufzeit, Kompilierzeit und Lesezeit ist nicht möglich 1 .


1 Außer durch nicht unterstützte clevere Hacks .

4voto

Hamza Yerlikaya Punkte 48319

Das stimmt,

(eval (read-string "(println \"Hello World!!\")"))
Hello World!!
nil

Genau wie Emacs können Sie Ihre Programmkonfiguration in Clojure haben, ein Projekt, für das ich Clojure kenne, ist statisch die es Ihnen erlaubt, Ihre Vorlage als Clojure-Vektor zusammen mit beliebigem Code zu haben, der zur Lesezeit ausgeführt wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X