Emulation von Closures in Tcl: Ein cleverer Trick

2025-05-03

Dieser Artikel untersucht die Implementierung eines Closure-ähnlichen Verhaltens in Tcl, einer Sprache ohne native Unterstützung für Closures. Der Autor nutzt Namespaces und das TclOO-Objektsystem, um eine Klasse zu erstellen, die Closures imitiert. Diese Klasse fängt externe Variablen ein und erhält ihre Gültigkeit außerhalb ihres ursprünglichen Gültigkeitsbereichs, wodurch effektiv eine ähnliche Funktionalität wie bei Closures erreicht wird. Obwohl sie sich geringfügig von C++-Closures unterscheidet, bietet dieser Ansatz eine praktische Lösung für diejenigen, die Closures in Tcl benötigen.

Mehr lesen
Entwicklung

Ein jq-Ersatz in Common Lisp: cljq

2025-05-02

Müde von der komplizierten DSL von jq? Hier ist cljq, ein in Common Lisp geschriebener Ersatz für jq. cljq verwendet einen intuitiveren Query-Operator, `?`, der JSONPath-ähnliche Funktionalität für die vereinfachte JSON-Bearbeitung bietet. Derzeit noch in der frühen Entwicklung, bietet cljq bereits grundlegende Funktionen mit Plänen für zukünftige Erweiterungen.

Mehr lesen

Schlüsselwortparameter in Tcl-Prozeduren: Eine elegante Lösung und ein Metaprogrammierungskopfschmerz

2025-04-21

Der Autor war frustriert über das Fehlen von Schlüsselwortparametern und die Unzugänglichkeit von integrierten Funktionen in einigen Programmiersprachen und stellte sich der Herausforderung, Schlüsselwortparameter in Tcl zu implementieren. Der Artikel präsentiert einen cleveren `proc*`-Befehl, der Schlüsselwortargumente in Tcl-Prozeduren ermöglicht, und beschreibt dessen Implementierung. Aufgrund der schwachen Metaprogrammierfähigkeiten von Tcl griff der Autor jedoch auf reguläre Ausdrücke für String-Templating zurück, was zu komplexem und schwer zu wartendem Code führte und die Grenzen von Tcl in der Metaprogrammierung aufzeigt.

Mehr lesen