Racket steht – wie allen Lisp-Dialekten – das mächtige Werkzeug Makros zur Verfügung. Mit ihnen können wir die Sprache erweitern und an unsere Bedürfnisse anpassen. Dabei sind nicht nur einfache syntaktische Konstrukte möglich, nein, ganze Typsysteme (wie zum Beispiel „Typed Racket“) oder Concurrency-Systeme („core.async“ aus Clojure) können damit implementiert werden.
Ein weiterer Aspekt sind eingebettete domänenspezifische Sprachen (eDSL): mithilfe von Makros kann eine präzise, den Fachbegriffen der Domäne entsprechende Sprache mit angepasster Syntax, entwickelt werden.
Racket geht den Weg der DSLs noch ein Stück weiter: Hier können wir die DSLs ganz ohne Racket-Code drum herum verwenden. Wie aus einer eDSL eine DSL wird schauen wir uns heute an!
Weiterlesen...