In welchen Sprachen gibt es hygienische Makros?
Hygienische Makros sind Makros, deren Expansion garantiert nicht zum versehentlichen Erfassen von Bezeichnern führt. Sie sind ein Merkmal von Programmiersprachen wie Scheme, Dylan, Rust, Nim und Julia. Das generelle Problem des versehentlichen Einfangens von Bezeichnern war in der Lisp-Gemeinschaft vor der Einführung der hygienischen Makros gut bekannt. Makroautoren nutzten Sprachfunktionen, die eindeutige Bezeichner generieren (z. B. gensym) oder verschleierte Bezeichner verwenden, um das Problem zu vermeiden. Hygienische Makros sind eine programmatische Lösung für das Erfassungsproblem, die in den Makroexpander selbst integriert ist. Der Begriff "Hygiene" wurde in der Arbeit von Kohlbecker et al. aus dem Jahr 1986 geprägt, in der die hygienische Makroexpansion in Anlehnung an die Terminologie der Mathematik eingeführt wurde.
Einige Sprachen, die hygienische Makros enthalten, sind Scheme, Dylan, Rust, Nim und Julia.
What are some languages that feature hygienic macros?
Hygienic macros are macros whose expansion is guaranteed not to cause the accidental capture of identifiers. They are a feature of programming languages such as Scheme,[1] Dylan,[2] Rust, Nim, and Julia. The general problem of accidental capture was well known within the Lisp community prior to the introduction of hygienic macros. Macro writers would use language features that would generate unique identifiers (e.g., gensym) or use obfuscated identifiers in order to avoid the problem. Hygienic macros are a programmatic solution to the capture problem that is integrated into the macro expander itself. The term "hygiene" was coined in Kohlbecker et al.'s 1986 paper that introduced hygienic macro expansion, inspired by the terminology used in mathematics.[3]
Some languages that feature hygienic macros include Scheme, Dylan, Rust, Nim, and Julia.