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...