Clojure ist eine dynamische Programmiersprache, was unter anderem
bedeutet, dass auch die Datentypen erst dynamisch zur Laufzeit
feststehen. Clojure kennt zwar sogenannte
type hints,
die sollen aber dem Compiler helfen, effizienteren Code zu generien
und sind nicht dafür da, Typeigenschaften von Datenstrukturen zu
erzwingen. Die
clojure-spec
-Bibliothek füllt diese
Lücke: Damit ist es möglich, die Struktur der Daten als Programmcode
zu spezifizieren und so die zur Laufzeit vorhandenen Daten zu
validieren. Das führt zu weniger unerwartetem Verhalten während der Programmlaufzeit
und im Fehlerfall zu besseren Fehlermeldungen. Zusätzlich ist sogar
möglich, Daten aus der Spezifikation zu generieren, zum Beispiel für
randomisiertes Testen.
Dieser Artikel gibt eine Einführung in clojure.spec
.